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

3 回复

可通过便携hvigor插件,在构建流程中判断当前编译目标,修模块依赖。

参考资料扩展构建:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-build-expanding-0000001731754304-V5

关键API:getDependenciesOptsetDependenciesOpt

参考资料:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-build-expanding-context-0000001777620174-V5#section18789410129

可参考以下参见脚本,修改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.json5dependencies字段目前不支持根据targetproduct自动匹配不同版本的HAR包。dependencies字段的作用是声明项目依赖的第三方模块,但它的设计并不包含根据目标平台或产品自动选择不同版本的机制。如果需要针对不同的targetproduct使用不同版本的HAR包,可以通过手动配置不同的oh-package.json5文件,或使用条件编译、脚本等方式在构建过程中动态调整依赖。

在HarmonyOS鸿蒙Next中,oh-package.json5的dependencies不支持根据target或product自动匹配不同版本的har包。这主要是因为当前依赖管理机制较为基础,无法根据设备类型或产品动态选择。建议通过以下方式解决:

  1. 手动管理:在不同项目或分支中手动指定所需版本的har包。
  2. 脚本自动化:编写脚本根据条件自动修改oh-package.json5中的依赖版本。
  3. 模块化设计:将不同版本的har包作为独立模块,通过代码逻辑动态加载。

期待未来版本能提供更灵活的依赖管理功能。

回到顶部