HarmonyOS 鸿蒙Next中多product的情况如何配置
HarmonyOS 鸿蒙Next中多product的情况如何配置 我现在准备了两个环境用来开发,一个是default一个是uat,然后我发现我把uat配置好了后,点run configuration并不能选择uat的,只有default的
更多关于HarmonyOS 鸿蒙Next中多product的情况如何配置的实战教程也可以访问 https://www.itying.com/category-93-b0.html
【背景知识】
- 配置文件说明build-profile.json5配置文件。
- 配置文件说明module.json5配置文件。
- 配置多目标产物。
【修改建议】
若想对不同的外发版本进行差异化定制,在进行多目标产物配置时,可以在工程级build-profile.json5->app{}->products[]中进行相关配置。下述方案提供了针对normal和vip版本的icon和label两个标签的差异化定制,具体方案参考如下:
(1)在工程级build-profile.json5中配置好products,此处除默认default之外,增加vip_product和normal_product配置;
"products": [{
"name": "default",
"signingConfig": "default",
"compatibleSdkVersion": "5.0.0(12)",
"runtimeOS": "HarmonyOS",
"buildOption": {
"strictMode": {
"caseSensitiveCheck": true,
"useNormalizedOHMUrl": true
}
}
},
{
"name": "vip_product",
"signingConfig": "vipSign",
"compatibleSdkVersion": "5.0.0(12)",
"runtimeOS": "HarmonyOS",
"buildOption": {
"strictMode": {
"caseSensitiveCheck": true,
"useNormalizedOHMUrl": true
}
}
},
{
"name": "normal_product",
"signingConfig": "normalSign",
"compatibleSdkVersion": "5.0.0(12)",
"runtimeOS": "HarmonyOS",
"buildOption": {
"strictMode": {
"caseSensitiveCheck": true,
"useNormalizedOHMUrl": true
}
}
}
]
(2)在工程级build-profile.json5中的modules标签下配置targets,并且限制每个target可以在哪个product下使用。以下限制vip的配置可以被product为default和vip_product使用,normal的配置可以被product为default和normal_product使用;
"modules": [
{
"name": "entry",
"srcPath": "./entry",
"targets": [
{
"name": "default",
"applyToProducts": [
"default",
"normal_product",
"vip_product"
]
},
{
"name": "vip", // target为vip时可以选择的product为default和vip_product
"applyToProducts": [
"default",
"vip_product"
]
},
{
"name": "normal", // target为normal时可以选择的product为default和normal_product
"applyToProducts": [
"default",
"normal_product"
]
}
]
}
]
(3)对于模块级的build-profile.json5,在target标签下的normal、vip字段中增加abilities配置如下:
"targets": [
{
"name": "default"
},
{
"name": "normal", // 当target为normal时,使用normal作为label
"source": {
"abilities": [
{
"name": "EntryAbility",
"icon":"$media:layered_image",
"label":"normal", // 实际配置中请用变量形式定义在string.json文件中
"launchType": "singleton"
}
]
}
},
{
"name": "vip", // 当target为vip时,使用vip作为label
"source": {
"abilities": [
{
"name": "EntryAbility",
"icon":"$media:layered_image",
"label":"vip", // 实际配置中请用变量形式定义在string.json文件中
"launchType": "singleton"
}
]
}
},
{
"name": "ohosTest",
}
]
【总结】
- 构建多目标产物时,控制应用icon和label需要在模块级的build-profile.json5中根据不同target在abilities标签下设置,默认模块级build-profile.json5中abilities优先级高于module.json5中abilities优先级,若模块级build-profile.json5中abilities未配置,则默认使用module.json5中配置内容。
- 工程级build-profile.json5配置中products中的label、icon、versionCode、versionName、resource字段配置,编译构建时会替换app.json5中的相关配置。
- DevEco Studio从5.0.3.800版本开始,不再对module.json5中的icon和label做强制校验,因此module.json5与app.json5只需要选择其一配置。module.json5的配置优先级更高。
- 应用icon/label优先级:模块级build-profile.json5 > 模块级module.json5 > 工程级build-profile.json5>app.json5。
更多关于HarmonyOS 鸿蒙Next中多product的情况如何配置的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
打开uat模块的module.json5文件,确认以下配置:
"deviceTypes": ["对应的设备类型"],
"type": "entry" // 必须设置为entry类型
修改build-profile.json5文件,添加自定义构建模式:
"buildMode": {
"uat": {
"signingConfig": "path/to/uat_signing.json",
"buildOption": {}
}
}
建议优先检查模块配置文件中的type字段设置,确保uat模块被正确识别为entry类型
在HarmonyOS Next中配置多product,需要在AppScope目录下创建products文件夹,定义不同product的json配置文件。每个product配置可指定targetOS、compileSdkVersion、targetAPIVersion等参数。通过DevEco Studio的Build Variants面板切换product构建目标。不同product可独立配置应用图标、名称、权限等属性。
在HarmonyOS Next中配置多product时,需要在build-profile.json5
中正确定义product并关联到相应的模块。根据您提供的截图,问题可能出在product配置未正确同步到运行配置中。请检查以下步骤:
-
确认product定义:在
build-profile.json5
中,确保uat和default都已正确定义,例如:"products": [ { "name": "default", "signingConfig": "default" }, { "name": "uat", "signingConfig": "uat" } ]
-
模块关联:在模块的
build-profile.json5
中,确保uat已添加到buildOn
列表中,例如:"buildOn": [ "default", "uat" ]
-
同步项目:在DevEco Studio中执行File > Sync Project,确保配置生效。
-
检查运行配置:重新打开Run/Debug Configurations,此时应能看到uat选项。如果仍未出现,尝试重启IDE或清理缓存。
如果问题持续,请验证json5文件语法是否正确,避免格式错误导致配置未被识别。