HarmonyOS鸿蒙Next中怎么动态设置app名字

HarmonyOS鸿蒙Next中怎么动态设置app名字 现在的artifactName是写死的,怎么在打包的时候,动态设置?

3 回复

在项目级 文件中hvigorfile.ts添加下面代码

import { appTasks, OhosPluginId, OhosAppContext } from '@ohos/hvigor-ohos-plugin';
import { hvigor, getNode, HvigorNode } from '@ohos/hvigor';

hvigor.afterNodeEvaluate(() => {
  const node: HvigorNode = getNode(__filename);
  const appContext = node.getContext(OhosPluginId.OHOS_APP_PLUGIN) as OhosAppContext;
  const buildProfile = appContext.getBuildProfileOpt()

  buildProfile.app.products[0].output.artifactName = 'TestartifactName.0.0.1';

  appContext.setBuildProfileOpt(buildProfile);
});

更多关于HarmonyOS鸿蒙Next中怎么动态设置app名字的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,动态设置应用程序名称可以通过在config.json文件中使用label字段来实现。label字段支持使用资源引用的方式动态设置应用名称。具体步骤如下:

  1. 定义资源文件:在resources目录下创建一个string.json文件,定义应用名称的字符串资源。例如:

    {
        "string": [
            {
                "name": "app_name",
                "value": "默认应用名称"
            }
        ]
    }
    
  2. 引用资源:在config.json文件的app字段中,使用$string:app_name引用定义的字符串资源。例如:

    {
        "app": {
            "bundleName": "com.example.myapp",
            "vendor": "example",
            "version": {
                "code": 1,
                "name": "1.0.0"
            },
            "apiVersion": {
                "compatible": 4,
                "target": 5,
                "releaseType": "Beta1"
            },
            "label": "$string:app_name"
        }
    }
    
  3. 动态修改资源:在代码中,可以通过ResourceManager类动态修改字符串资源的值。例如:

    import resourceManager from '[@ohos](/user/ohos).resourceManager';
    
    let context = getContext(this);
    resourceManager.getResourceManager(context).then((resourceMgr) => {
        resourceMgr.updateStringValue("app_name", "新的应用名称").then(() => {
            console.log("应用名称已更新");
        });
    });
    

通过以上步骤,可以在HarmonyOS鸿蒙Next中动态设置应用名称。

在HarmonyOS鸿蒙Next中,动态设置应用名称可以通过修改config.json文件中的label字段实现。首先,在resources目录下创建不同语言的字符串资源文件,然后在config.json中引用这些资源。例如:

{
  "app": {
    "bundleName": "com.example.myapp",
    "label": "$string:app_name"
  }
}

在代码中,可以通过ResourceManager动态获取并设置应用名称:

ResourceManager resourceManager = getResourceManager();
String appName = resourceManager.getElement(ResourceTable.String_app_name).getString();
setTitle(appName);

注意,应用名称的动态修改可能在系统层面有限制,需确保符合平台规范。

回到顶部