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
更多关于HarmonyOS鸿蒙Next中构建多个不同的APP产物,icon和名称为何没有区别的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中构建多个不同的APP产物时,如果icon和名称没有区别,可能是由于以下原因:
-
资源配置未正确区分:每个APP的
app.json5
或module.json5
文件中,icon
和label
字段未正确配置,导致系统无法区分不同APP的图标和名称。 -
资源路径冲突:多个APP可能使用了相同的资源路径或资源ID,导致系统加载了相同的图标和名称。
-
构建配置问题:在构建过程中,可能未正确指定不同APP的资源配置,导致生成的产物使用了相同的默认图标和名称。
-
缓存问题:设备或模拟器可能缓存了之前的APP图标和名称,导致新构建的APP未显示正确的图标和名称。
-
系统限制:某些系统版本或设备可能存在限制,导致无法正确显示不同APP的图标和名称。
检查并确保每个APP的资源配置正确,避免路径冲突,并清理缓存,通常可以解决此问题。