HarmonyOS鸿蒙Next模块依赖oh-package.json5中的dependencies不能实现根据target或者product自动匹配不同版本的har包
HarmonyOS鸿蒙Next模块依赖oh-package.json5中的dependencies不能实现根据target或者product自动匹配不同版本的har包
entry/libs目录下有两个qaxvpnsdk_cntls-v1.0.202411081545.har和qaxvpnsdk_standard-v1.0.202411081545.har,两个har的导出接口相同不能同时编译(一定会冲突),在oh-package.json5文件的dependencies中不能根据target进行区分依赖两个SDK的har包,目前只能注释掉一个,每次编译都需要注释掉另一个,不能实现target自动化匹配依赖不同文件名(不同libs目录的har文件);
期望效果:类似于android中的build.gradle的dependencies中:
dependencies { //注:使用新版本的aar,秩序使用一个aar即可,不能再依赖libsecure_portal.jar,否则会出现类重复 standardImplementation(name: ‘qaxvpnsdk-standard-v1.8.04-20241024_190129’, ext: ‘aar’) cntlsImplementation(name: ‘qaxvpnsdk-cntls-v1.8.04-20241024_190118’, ext: ‘aar’) }
更多关于HarmonyOS鸿蒙Next模块依赖oh-package.json5中的dependencies不能实现根据target或者product自动匹配不同版本的har包的实战教程也可以访问 https://www.itying.com/category-93-b0.html
可通过便携hvigor插件,在构建流程中判断当前编译目标,修模块依赖。
关键API:getDependenciesOpt
和 setDependenciesOpt
可参考以下参见脚本,修改hap模拟依赖:
import { hapTasks, OhosHapContext, OhosPluginId, Target } from '@ohos/hvigor-ohos-plugin';
import { hvigor, HvigorNode, HvigorPlugin } from '@ohos/hvigor';
export function customPlugin(): HvigorPlugin {
return {
pluginId: 'customPlugin',
async apply(currentNode: HvigorNode): Promise<void> {
const hapContext = currentNode.getContext(OhosPluginId.OHOS_HAP_PLUGIN) as OhosHapContext;
hapContext?.targets((target: Target) => {
const targetName = target.getTargetName();
console.log('-------此时default: ', targetName);
const dependency = hapContext.getDependenciesOpt();
if (targetName === 'default') {
// 新增 或者 修改依赖
dependency['ohpmi_har'] = '2.0.0';
// 删除依赖
delete dependency['har1'];
} else if (targetName === 'default1') {
dependency['ohpmi_har'] = '1.0.0';
dependency['har'] = 'file:../har';
}
hapContext.setDependenciesOpt(dependency)
});
}
}
}
export default {
system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
plugins: [
customPlugin()
]
}
更多关于HarmonyOS鸿蒙Next模块依赖oh-package.json5中的dependencies不能实现根据target或者product自动匹配不同版本的har包的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,oh-package.json5的dependencies不支持根据target或product自动匹配不同版本的har包。这主要是因为当前依赖管理机制较为基础,无法根据设备类型或产品动态选择。建议通过以下方式解决:
- 手动管理:在不同项目或分支中手动指定所需版本的har包。
- 脚本自动化:编写脚本根据条件自动修改oh-package.json5中的依赖版本。
- 模块化设计:将不同版本的har包作为独立模块,通过代码逻辑动态加载。
期待未来版本能提供更灵活的依赖管理功能。