HarmonyOS 鸿蒙Next中多product的情况如何配置

HarmonyOS 鸿蒙Next中多product的情况如何配置 我现在准备了两个环境用来开发,一个是default一个是uat,然后我发现我把uat配置好了后,点run configuration并不能选择uat的,只有default的

cke_3611.png

cke_2908.png

cke_2452.png


更多关于HarmonyOS 鸿蒙Next中多product的情况如何配置的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

【背景知识】

【修改建议】

若想对不同的外发版本进行差异化定制,在进行多目标产物配置时,可以在工程级build-profile.json5->app{}->products[]中进行相关配置。下述方案提供了针对normalvip版本的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配置未正确同步到运行配置中。请检查以下步骤:

  1. 确认product定义:在build-profile.json5中,确保uat和default都已正确定义,例如:

    "products": [
      {
        "name": "default",
        "signingConfig": "default"
      },
      {
        "name": "uat",
        "signingConfig": "uat"
      }
    ]
    
  2. 模块关联:在模块的build-profile.json5中,确保uat已添加到buildOn列表中,例如:

    "buildOn": [
      "default",
      "uat"
    ]
    
  3. 同步项目:在DevEco Studio中执行File > Sync Project,确保配置生效。

  4. 检查运行配置:重新打开Run/Debug Configurations,此时应能看到uat选项。如果仍未出现,尝试重启IDE或清理缓存。

如果问题持续,请验证json5文件语法是否正确,避免格式错误导致配置未被识别。

回到顶部