HarmonyOS 在构建多目标产物时如何根据产品配置不同的依赖dependencies

1.项目内工程级build-profile.json5 构建了两种类型products,分别为 default 和 driverInstall。

2.主Entry Module 的 build-profile.json5,构建了两种类型类的 target,分别为 default 和 driverInstall。

场景描述:

1.在上述项目架构下,default 产品为标准构建,主Entry Module的oh-package.json5 文件中的 dependencies 节点,【不需要】依赖特殊的 HAR Module(该Module内包含 native层代码),不希望最终的HAP包中包含该Module的代码。

driverInstall 产品在构建时,主Entry Module的oh-package.json5 文件中的 dependencies 节点,【需要】依赖特殊的 HAR Module(该Module内包含 native层代码)将其打包到最终的HAP包中。

在该种场景下如何在 项目工程内动态根据产品类型配置其要依赖的本地Module 或者 第三方Module?

2.这种场景在其他系统中,是可以通过 产品名+implementation project 的形式 来根据产品进行按需依赖。

3.想问下HarmonyOS系统的IDE上,该如何实现该种业务需求?

HarmonyOS
6天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

可通过hvigor插件,在构建流程中判断当前编译目标,修模块依赖。 参考资料扩展构建:

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

关键API:getDependenciesOpt和setDependenciesOpt

参考资料:

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()
 ]
 / Custom plugin to extend the functionality of Hvigor. */
分享
微博
QQ
微信
回复
6天前
相关问题
如何定制构建多目标产物
913浏览 • 2回复 待解决
HarmonyOS如何建立多目标的工程呢
368浏览 • 1回复 待解决
har多目标,多值问题如何解决?
499浏览 • 1回复 待解决
HarmonyOS har多产物构建问题
127浏览 • 1回复 待解决