HarmonyOS鸿蒙Next中构建多个不同的APP产物,icon和名称为何没有区别

HarmonyOS鸿蒙Next中构建多个不同的APP产物,icon和名称为何没有区别

【问题现象】

需要在一个工程项目中,构建多个不同的APP,不同product拥有不同的bundle name、应用名称、应用图标。但是构建完后,并不能根据当前的product配置的信息替换Appscope文件下的app.json5里面的默认内容。

【背景知识】

app.json5中的icon和label改变的是设置中显示的图标和名称。例如:

点击放大

正常使用DevEco Studio推包安装到手机的是HAP包,而HAP包里的icon和label是由module.json5文件决定的。例如:

点击放大

要在工程级build-profile.json5文件products中配置不同的APP产物,并配置对应icon和label来覆盖app.json5里面的默认内容:

{
   "app": {
     "signingConfigs": [],
     "products": [
       {
         "name": "default",
         "signingConfig": "default",
         "compatibleSdkVersion": "5.0.0(12)",
         "runtimeOS": "HarmonyOS",
         "icon":"$media:default_icon", // 定义default的icon
         "label":"$string:default_name", // 定义default的label
       },
       {
         "name": "productA",
         "signingConfig": "default",
         "compatibleSdkVersion": "5.0.0(12)",
         "icon":"$media:productA_icon", // 定义productA的icon
         "label":"$string:productA_name", // 定义productA的label
       },
     ],
     "buildModeSet": [
       {
         "name": "debug",
       },
       {
         "name": "release"
       }
     ],
    "modules": [
      {
         "name": "entry",
         "srcPath": "./entry",
         "targets": [
          {
             "name": "default",
             "applyToProducts": [
               "default"
             ]
         },
         {
             "name": "productA",
             "applyToProducts": [
               "productA"
             ]
          }
        ]
      }
    ]
   }
 }

HAP包中模块级的build-profile.json5定制对应的target产物,来覆盖module.json5中的配置:

{ 
    "apiType": 'stageMode', 
    "buildOption": { 
    }, 
    "targets": [ 
      { 
        "name": "default", 
        "source": {
         "abilities": [
           {
             "name": "EntryAbility",
             "icon":"$media:default_icon",
             "label":"$string:default_name"
           }
         ]
       }
      }, 
      { 
        "name": "productA", 
        "source": {
         "abilities": [
           {
             "name": "EntryAbility",
             "icon":"$media:productA_icon",
             "label":"$string:productA_name"
           }
         ]
       }
      }
    ] 
  }

【定位思路】

HAP包中build-profile.json5是否定制对应的target产物,来覆盖module.json5中的配置。

【解决方案】

针对HAP包也定制对应的target产物,并定制不同的icon、label。

【总结】

product中的icon和label改变设置中显示的图标和名称,应用桌面的图标和名称是由HAP包的icon和label决定的。

可通过打包后的产物来检查是否配置正确:

点击放大

点击放大

点击放大

点击放大

附:配置多目标产物-能力说明


更多关于HarmonyOS鸿蒙Next中构建多个不同的APP产物,icon和名称为何没有区别的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next中构建多个不同的APP产物,icon和名称为何没有区别的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中构建多个不同的APP产物时,如果icon和名称没有区别,可能是由于以下原因:

  1. 资源配置未正确区分:每个APP的app.json5module.json5文件中,iconlabel字段未正确配置,导致系统无法区分不同APP的图标和名称。

  2. 资源路径冲突:多个APP可能使用了相同的资源路径或资源ID,导致系统加载了相同的图标和名称。

  3. 构建配置问题:在构建过程中,可能未正确指定不同APP的资源配置,导致生成的产物使用了相同的默认图标和名称。

  4. 缓存问题:设备或模拟器可能缓存了之前的APP图标和名称,导致新构建的APP未显示正确的图标和名称。

  5. 系统限制:某些系统版本或设备可能存在限制,导致无法正确显示不同APP的图标和名称。

检查并确保每个APP的资源配置正确,避免路径冲突,并清理缓存,通常可以解决此问题。

回到顶部