HarmonyOS 鸿蒙Next 如何动态修改module.json5文件值

HarmonyOS 鸿蒙Next 如何动态修改module.json5文件值 集成个推+华为离线推送需要在entry模块下的module.json5文件中配置

项目实现了多目标产物区分了target, 但是metadata值没办法在文件中根据不同target进行配置

通过查找文档 利用hvigor 插件 动态修改metadata中的值

1、找到entry模块下的hvigorfile.ts 文件

2、写入修改module.json5中值的代码

import  { hapTasks, OhosPluginId, OhosHapContext } from '@ohos/hvigor-ohos-plugin';

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 hapJson5: HapJson.HapOptObj = hapContext.getModuleJsonOpt();
        if (targetName === 'default') {
          hapJson5.module.metadata[0]['value'] = '*******************3J9';
          console.log('-------default此时value: ',  hapJson5.module.metadata[0]['value']);
        } else if (targetName === 'sales') {
          hapJson5.module.metadata[0]['value'] = '*******************4q6';
          console.log('-------sales此时value: ',  hapJson5.module.metadata[0]['value']);
        }
        hapContext.setModuleJsonOpt(hapJson5)
      });
    }
  };
}

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

3、当切换不同Product运行的时候可以看到会根据不同target动态修改了metadata的值


更多关于HarmonyOS 鸿蒙Next 如何动态修改module.json5文件值的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next 如何动态修改module.json5文件值的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,module.json5文件通常用于定义模块的配置信息。动态修改module.json5文件值在运行时并不是一种推荐的做法,因为配置文件通常用于定义静态信息,且在应用启动时加载。不过,如果你确实需要在运行时修改配置信息,可以考虑以下几种方法,但请注意这些方法可能涉及对系统行为的非标准修改,需谨慎使用:

  1. 应用内缓存机制:不直接修改module.json5文件,而是在应用内维护一个配置信息的缓存。当需要修改配置时,更新缓存中的值,并在应用逻辑中优先使用缓存值。

  2. 外部存储:将配置信息保存到应用的外部存储(如文件或数据库)中。在需要修改配置时,更新外部存储中的值,并在应用启动时或需要时从外部存储中读取。

  3. 服务进程通信:如果应用由多个服务进程组成,可以通过进程间通信(IPC)机制在运行时传递配置更新信息。

需要注意的是,直接修改module.json5文件在运行时可能涉及到文件读写权限、文件锁定以及应用重启等问题,且可能不被系统支持或导致不可预见的行为。

如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html

回到顶部