开发中,调试和正式发布版本的编译行为通常不同(如debug开启调试信息、release开启混淆)。通过利用buildMode能力定制两种版本的编译差异性。

一、说明

示例工程中包含一个模块entry,交付到构建产物default中,模块定制两种不同的编译模式:

构建模式 编译行为
debug 使能debug调试,不开启混淆
release 使能混淆,对代码进行保护

二、工程级build-profile.json5配置

{
  "app": {
    "signingConfigs": [],
    "products": [
      {
        "name": "default",
        "signingConfig": "default",
        "compatibleSdkVersion": "26.0.0",
        "runtimeOS": "HarmonyOS",
        "buildOption": {
          "strictMode": {
            "caseSensitiveCheck": true,
            "useNormalizedOHMUrl": true
          }
        }
      }
    ],
    "buildModeSet": [
      { "name": "debug" },
      { "name": "release" }
    ]
  },
  "modules": [
    {
      "name": "entry",
      "srcPath": "./entry",
      "targets": [
        { "name": "default", "applyToProducts": ["default"] }
      ]
    }
  ]
}

关键配置

配置项 说明
products 定义产品default
buildModeSet 定义debug和release两种构建模式
modules.targets entry模块绑定到default product

三、模块级build-profile.json5配置

{
  "apiType": "stageMode",
  "buildOption": {},
  "buildOptionSet": [
    {
      "name": "release",
      "arkOptions": {
        "obfuscation": {
          "ruleOptions": {
            "enable": true,
            "files": ["./obfuscation-rules.txt"]
          }
        }
      }
    },
    {
      "name": "debug",
      "debuggable": true,
      "arkOptions": {
        "obfuscation": {
          "ruleOptions": { "enable": false }
        }
      }
    }
  ],
  "buildModeBinder": [
    {
      "buildModeName": "release",
      "mappings": [
        { "buildOptionName": "release", "targetName": "default" }
      ]
    },
    {
      "buildModeName": "debug",
      "mappings": [
        { "buildOptionName": "debug", "targetName": "default" }
      ]
    }
  ],
  "targets": [
    { "name": "default" },
    { "name": "ohosTest" }
  ]
}

关键配置

配置项 说明
buildOptionSet 定义release(开启混淆)和debug(debuggable:true,不混淆)
buildModeBinder 将release模式绑定release option,debug模式绑定debug option

四、指定构建模式

4.1 命令行方式

构建debug模式

hvigorw --mode project -p product=default -p buildMode=debug assembleApp

构建release模式

hvigorw --mode project -p product=default -p buildMode=release assembleApp

4.2 DevEco Studio界面

  1. Build Mode下拉选择对应配置选项(debug/release)

  2. 点击 Build → Build Hap(s)/APP(s) → Build APP(s)

五、编译产物

构建模式 产物特征
debug 包含调试信息,可进行调试,不开启混淆
release 去掉调试信息,减小体积,开启混淆保护代码
Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐