HarmonyOS鸿蒙Next实现HAR多渠道打包,动态配置构建应该怎么配置
HarmonyOS鸿蒙Next实现HAR多渠道打包,动态配置构建应该怎么配置
我在构建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
可以参考下文档: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
是鸿蒙系统的构建配置文件,用于定义模块、依赖、资源等构建信息。
-
多渠道配置:在
ohos.build
文件中,可以通过product
字段定义不同的产品配置。每个产品配置可以指定不同的资源、模块或特性。例如:{ "product": { "product1": { "resource": "resource/product1", "module": "module1" }, "product2": { "resource": "resource/product2", "module": "module2" } } }
通过这种方式,可以在打包时选择不同的产品配置,生成不同的HAR包。
-
动态配置构建:在
ohos.build
文件中,可以使用buildVariants
字段定义构建变体。构建变体可以根据不同的构建参数(如debug
、release
)动态配置资源或模块。例如:{ "buildVariants": { "debug": { "resource": "resource/debug", "module": "module_debug" }, "release": { "resource": "resource/release", "module": "module_release" } } }
在构建时,系统会根据当前的构建参数(如
debug
或release
)自动选择对应的配置。 -
HAR打包:在
ohos.build
文件中,通过har
字段定义HAR包的输出路径和依赖关系。例如:{ "har": { "outputPath": "output/har", "dependencies": [ "module1", "module2" ] } }
打包时,系统会根据配置生成对应的HAR包,并包含指定的依赖模块。
通过上述配置,可以在HarmonyOS鸿蒙Next中实现HAR多渠道打包和动态配置构建。
在HarmonyOS鸿蒙Next中实现HAR(HarmonyOS Ability Resources)多渠道打包,可以通过以下步骤动态配置构建:
-
创建渠道配置文件:在
config.json
中定义不同渠道的配置,如应用名称、图标等。 -
使用Gradle脚本:在
build.gradle
中配置渠道参数,通过productFlavors
定义不同渠道的构建变体。 -
动态加载资源:在代码中通过
ResourceManager
动态加载不同渠道的资源文件,确保应用在不同渠道下使用正确的配置。 -
打包发布:使用Gradle命令
assemble
生成不同渠道的HAR包,如./gradlew assembleChannel1Release
。
通过以上配置,可实现HAR的多渠道打包与动态构建。