HarmonyOS鸿蒙Next实现HAR多渠道打包,动态配置构建应该怎么配置

HarmonyOS鸿蒙Next实现HAR多渠道打包,动态配置构建应该怎么配置

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-build-expanding-context-V5#section192992531393

我在构建HAR时, 多渠道构建时, 在部分渠道下需要修改第三方HAR的依赖版本。
我打 har 的 module 的编译插件是这么写的。

// 模块级hvigorfile.ts

import { harTasks, OhosHapContext, OhosPluginId, Target } from '@ohos/hvigor-ohos-plugin';
import { hvigor, HvigorNode, HvigorPlugin } from '@ohos/hvigor';
import * as fs from 'fs';

export function customPlugin(options: OnlineSignOptions): HvigorPlugin {
  return {
    pluginId: 'customPlugin',
    context() {
      return { signConfig: options };
    },
    async apply(currentNode: HvigorNode): Promise<void> {
      const harContext = currentNode.getContext(OhosPluginId.OHOS_HAR_PLUGIN) as OhosHarContext;
      const dependency = harContext.getDependenciesOpt({});
      //获取dependency依赖
      dependency["library"] = "file:library.har"
      console.log(dependency);
      harContext.setDependenciesOpt(dependency);
    }
  }
}
;

export default {
  system: harTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
  plugins: [customPlugin()] /* Custom plugin to extend the functionality of Hvigor. */
}

输出的结果是:

"D:\DevEco Studio\tools\node\node.exe" "D:\DevEco Studio\tools\hvigor\bin\hvigorw.js" --sync -p product=default --analyze=normal --parallel --incremental --daemon { '@app/baselib': 'file:./libs/baselib.har', '@app/sldevicesdk': 'file:./libs/sldevicesdk.har', '@app/webview': 'file:./libs/webview.har', '@app/crypto': 'file:./libs/crypto.har', '@ohos/liveeventbus': '2.1.1-rc.1', '@ohos/imageknife': '2.1.1', '@ohos/zxing': '^2.0.4-rc.2' }  

我想把oh-package.json5 的 imageknife的版本从 2.1.1动态改成 3.0.0. 这个动态修改应该怎么写?

oh-package.json5 中的一来是这么写的: "@ohos/imageknife": "2.1.1",

更多关于HarmonyOS鸿蒙Next实现HAR多渠道打包,动态配置构建应该怎么配置的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

可以参考下文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-build-expanding-sample-V5

获取targetName:

function hapTask(currentNode: HvigorNode) {
  // 等待全部节点加载完成之后获取子节点信息
  currentNode.subNodes((node: HvigorNode) => {
    // 获取hap模块上下文信息
    const hapContext = node.getContext(OhosPluginId.OHOS_HAP_PLUGIN) as OhosHapContext;
    const moduleName = hapContext?.getModuleName();
    hapContext?.targets((target: Target) => {
      const targetName = target.getTargetName();
      const outputPath = target.getBuildTargetOutputPath();
      // 禁用任务
      node.getTaskByName(`${target.getTargetName()}@SignHap`)?.setEnable(false);
      node.registerTask({
        // 任务名称
        name: `${targetName}@onlineSignHap`,
        // 任务执行逻辑主体函数
        run() {
          console.log('module Task');
        },
        // 配置前置任务依赖
        dependencies: [`${targetName}@PackageHap`],
        // 配置任务的后置任务依赖
        postDependencies: ['assembleHap']
      });
    });
  });
}

更多关于HarmonyOS鸿蒙Next实现HAR多渠道打包,动态配置构建应该怎么配置的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,实现HAR(HarmonyOS Ability Resources)多渠道打包和动态配置构建,主要通过ohos.build文件进行配置。ohos.build是鸿蒙系统的构建配置文件,用于定义模块、依赖、资源等构建信息。

  1. 多渠道配置:在ohos.build文件中,可以通过product字段定义不同的产品配置。每个产品配置可以指定不同的资源、模块或特性。例如:

    {
      "product": {
        "product1": {
          "resource": "resource/product1",
          "module": "module1"
        },
        "product2": {
          "resource": "resource/product2",
          "module": "module2"
        }
      }
    }
    

    通过这种方式,可以在打包时选择不同的产品配置,生成不同的HAR包。

  2. 动态配置构建:在ohos.build文件中,可以使用buildVariants字段定义构建变体。构建变体可以根据不同的构建参数(如debugrelease)动态配置资源或模块。例如:

    {
      "buildVariants": {
        "debug": {
          "resource": "resource/debug",
          "module": "module_debug"
        },
        "release": {
          "resource": "resource/release",
          "module": "module_release"
        }
      }
    }
    

    在构建时,系统会根据当前的构建参数(如debugrelease)自动选择对应的配置。

  3. HAR打包:在ohos.build文件中,通过har字段定义HAR包的输出路径和依赖关系。例如:

    {
      "har": {
        "outputPath": "output/har",
        "dependencies": [
          "module1",
          "module2"
        ]
      }
    }
    

    打包时,系统会根据配置生成对应的HAR包,并包含指定的依赖模块。

通过上述配置,可以在HarmonyOS鸿蒙Next中实现HAR多渠道打包和动态配置构建。

在HarmonyOS鸿蒙Next中实现HAR(HarmonyOS Ability Resources)多渠道打包,可以通过以下步骤动态配置构建:

  1. 创建渠道配置文件:在config.json中定义不同渠道的配置,如应用名称、图标等。

  2. 使用Gradle脚本:在build.gradle中配置渠道参数,通过productFlavors定义不同渠道的构建变体。

  3. 动态加载资源:在代码中通过ResourceManager动态加载不同渠道的资源文件,确保应用在不同渠道下使用正确的配置。

  4. 打包发布:使用Gradle命令assemble生成不同渠道的HAR包,如./gradlew assembleChannel1Release

通过以上配置,可实现HAR的多渠道打包与动态构建。

回到顶部