实践说明
====

应用正式对外发布版本前，需要对应用进行代码调试。调试和正式发布版本，两者编译行为可能不同。此时，可以利用buildMode能力，来定制两个版本的编译差异性。

假设其中构建产物均为default，但编译行为不同：release模式下使能混淆，debug模式下使能debug调试。

示例工程中包含一个模块entry，将entry模块交付到构建产物default中，模块定制两种不同的编译模式debug、release，将两种构建模式均绑定到构建产物default中。工程示例图如下（模块）：

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ae/v3/qQ48EtcCT66jJA_JC1MI8Q/zh-cn_image_0000002594474260.png?HW-CC-KV=V1&HW-CC-Date=20260612T073908Z&HW-CC-Expire=86400&HW-CC-Sign=CFC4E0196CE05C60BF64EA35A69996C97999ECE9FFB229BA2B70D0D666E5EF0C)

#### 工程级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"
          \]
        }
      \]
    }
  \]
}

#### 模块级build-profile.json5示例

#### \[h2\]entry模块

{
  "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",
    }
  \]
}

#### 指定构建模式

#### \[h2\]命令行

示例1：构建APP时，构建产物为default，指定构建模式为debug，可执行如下命令：

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

编译产物示例如下：

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/2e/v3/fOpxQxu-RoueSP9UcT3KrA/zh-cn_image_0000002624993617.png?HW-CC-KV=V1&HW-CC-Date=20260612T073908Z&HW-CC-Expire=86400&HW-CC-Sign=B8D8E0C06E46B2A42C95F26F681015010A20C8A1B7BFD9D8EA2E787F1E7EDFF9)

示例2：构建APP时，构建产物为default，指定构建模式为release，可执行如下命令：

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

编译产物示例如下：

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/09/v3/-8OMeHCQTru6pjY1Lhx6Sw/zh-cn_image_0000002624993613.png?HW-CC-KV=V1&HW-CC-Date=20260612T073908Z&HW-CC-Expire=86400&HW-CC-Sign=E39707A0A4AC4D349C41AF5915C091EC1B0773CBEE5119D8B71DE20790E32AD2)

#### \[h2\]DevEco Studio界面

在DevEco Studio界面进行可视化配置，Build Mode下拉选择对应配置选项debug后，点击Build -> Build Hap(s)/APP(s) -> Build APP(s) ，构建编译模式为debug，构建产物为default的APP包。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/6b/v3/San2rxDqR3CD44F2O5kxRw/zh-cn_image_0000002625073759.png?HW-CC-KV=V1&HW-CC-Date=20260612T073908Z&HW-CC-Expire=86400&HW-CC-Sign=4C6BDA9A69E58859033765B3E6BADC4BED47066F89547464A3ACAA109B8BD549)