​ 在Android上面会出现一个项目编译多个程序的马甲包,在鸿蒙上面是  多目标产物构建开发实践  来实现马甲包的效果

基本概念

target:对应HAR、HSP、HAP的多目标产物。工程内的每一个模块可以定义多个target,每个Target对应一个定制的HAP、HAR包,通过配置可以实现一个模块构建出不同的HAP、HAR包。 product:对应App的多目标产物。一个HarmonyOS工程的构建产物为App包,一个工程可以定义多个product,每个product对应一个定制化应用包,通过配置可以实现一个工程构建出多个不同的应用包。

1、项目中build-profile.json5配置

图片

1、signingConfigs是配置签名文件地方,如何配置请看下方

2、在signingConfig中配置签名文件

3、在buildProfileFields中自定义参数

4、在bundleName中配置不同的包名

{
  "app": {
    "signingConfigs": [],    //签名文件需要配置
    "products": [
      {
        "name": "default",
        "signingConfig": "default",//签名文件  如果需要单独配置,需要在signingConfigs中声明使用
        //签名配置
        "compatibleSdkVersion": "5.0.1(13)",
        "runtimeOS": "HarmonyOS",
        "buildOption": {
          "strictMode": {
            "caseSensitiveCheck": true,
            "useNormalizedOHMUrl": true
          },
          "arkOptions": {
            // 工程级自定义参数
            "buildProfileFields": {
              "IP": 'com.example.default',
              "HTTP_TYPE": 'https://',
              "PORT": 8888,
              "FLAVOR": 'default'
            }
          }
        },
        "bundleName": "com.app.example.default",
        // 包名
        "bundleType": "app",
        "versionCode": 1000000,
        "versionName": "1.0.0",
        "icon": "$media:startIcon", // 应用图标
        "label": "$string:app_name"// 应用名称
      },
      {
        "name": "produce",
        "signingConfig": "default",//签名文件  如果需要单独配置,需要在signingConfigs中声明使用
        //签名配置
        "compatibleSdkVersion": "5.0.1(13)",
        "runtimeOS": "HarmonyOS",
        "buildOption": {
          "strictMode": {
            "caseSensitiveCheck": true,
            "useNormalizedOHMUrl": true
          },
          "arkOptions": {
            // 工程级自定义参数
            "buildProfileFields": {
              "IP": 'com.example.produce',
              "HTTP_TYPE": 'https://',
              "PORT": 8888,
              "FLAVOR": 'produce'
            }
          }
        },
        "bundleName": "com.app.example.produce", // 包名
        "bundleType": "app",
        "versionCode": 1000000,
        "versionName": "1.0.0",
        "icon": "$media:startIcon", // 应用图标
        "label": "$string:app_name_1"// 应用名称
      },
      {
        "name": "test",
        "signingConfig": "default",//签名文件  如果需要单独配置,需要在signingConfigs中声明使用
        //签名配置
        "compatibleSdkVersion": "5.0.1(13)",
        "runtimeOS": "HarmonyOS",
        "buildOption": {
          "strictMode": {
            "caseSensitiveCheck": true,
            "useNormalizedOHMUrl": true
          },
          "arkOptions": {
            // 工程级自定义参数
            "buildProfileFields": {
              "IP": 'com.example.test',
              "HTTP_TYPE": 'https://',
              "PORT": 8888,
              "FLAVOR": 'test'
            }
          }
        },
        "bundleName": "com.app.example.test", // 包名
        "bundleType": "app",
        "versionCode": 1000000,
        "versionName": "1.0.0",
        "icon": "$media:startIcon", // 应用图标
        "label": "$string:app_name_2"// 应用名称
      }
    ],
    "buildModeSet": [
      {
        "name": "debug",
      },
      {
        "name": "release"
      }
    ]
  },
  "modules": [
    {
      "name": "entry",
      "srcPath": "./entry",
      "targets": [
        {
          "name": "default",
          //需要在build-profile.json5配置
          "applyToProducts": [
            "default"
          ]
        },
        {
          "name": "produce",
          //需要在build-profile.json5配置
          "applyToProducts": [
            "produce"
          ]
        },
        {
          "name": "test",
          //需要在build-profile.json5配置
          "applyToProducts": [
            "test"
          ]
        }
      ]
    },
    {
      "name": "common",
      "srcPath": "./common/common",
    }
  ]
}

2、entry下面的build-profile.json5配置

图片

{
  "apiType": "stageMode",
  "buildOption": {
  },
  "buildOptionSet": [
    {
      "name": "release",
      "arkOptions": {
        "obfuscation": {
          "ruleOptions": {
            "enable": false,
            "files": [
              "./obfuscation-rules.txt"
            ]
          }
        }
      }
    },
  ],
  "targets": [
    {
      "name": "default"
    },
    {
      "name": "produce",    //配置不同目标
      "source": {
        "pages": [
          "pages/Index"
        ]/*,
        "sourceRoots": [   //如果有需要可以设置单独入口
         *//* "./src/produce_pages"*//*
        ]*/
      },
      "resource": {
        "directories": [    //配置资源读取位置
          "./src/main/produce/resources",
          "./src/main/resources"
        ]
      }
    },
    {
      "name": "test",     //配置不同目标
      "source": {
        "pages": [
          "pages/Index"
        ]
        /*, "sourceRoots": [    //如果有需要可以设置单独入口
            "./src/test_pages"
            ]*/
      },
#### "resource": {
        "directories": [    //配置资源读取位置
          "./src/main/test/resources",
          "./src/main/resources"
        ]
      }
    }
  ]
}

3、自定义资源目录

图片

4、自定义参数

在BuildProfile.ets中出现在我们在工程目录下面build-profile.json5里面定义好的参数

图片

5、找不到BuildProfile.ets怎么办

选择要生成的目录,点击Build选择Generate Build Profile 'common'

图片

6、怎么切换环境

1、点击Product,2、选择Product,3、点击Apply,然后运行项目

图片

7、怎么配置签名文件

图片

图片

8、效果

图片

9、示例代码:

https://gitee.com/androidNTWS/vest-bag


你听我说
1 声望0 粉丝