一、内置构建模式
当创建新工程时,DevEco Studio会自动创建三种构建模式:
| 构建模式 | 说明 |
|---|---|
| debug | 开发、调试推荐选项。buildOption中debuggable默认为true,产物包含大量调试信息 |
| release | 打包、发布推荐选项。buildOption中debuggable默认为false,产物会去掉调试信息并对字节码优化 |
| test | 运行ohosTest测试套件推荐选项(未出现在配置文件中,测试框架自动使用) |
注意:test模式虽然没有出现在工程级build-profile.json5中,但用测试框架开启测试时自动使用。
二、指定构建模式
2.1 界面设置
点击studio右上角小齿轮图标选择构建模式,内置三个选项:<Default>、debug、release。
| 选项 | 说明 |
|---|---|
| <Default> | 构建APP使用release模式;构建HAP/HSP/HAR使用debug模式 |
| debug | 所有产物均使用debug模式,debuggable默认为true |
| release | 所有产物均使用release模式,debuggable默认为false |
备注:自定义构建模式也会在界面中显示对应选项。
2.2 命令行设置
通过buildMode指定:
hvigorw --mode module -p product=default -p module=entry@default -p buildMode=release assembleHap通过debuggable指定:
# release模式 hvigorw --mode module -p product=default -p module=entry@default -p debuggable=false assembleHap # debug模式 hvigorw --mode module -p product=default -p module=entry@default -p debuggable=true assembleHap备注:未指定构建模式时:构建APP默认release模式;构建HAP/HSP/HAR默认debug模式。
三、定制构建模式
采用buildOption字段声明编译选项,并通过buildModeBinder绑定target、buildOption和buildMode三者关系。
3.1 buildModeSet(工程级)
| 字段 | 说明 |
|---|---|
| name | 构建模式名称(全局唯一,不区分大小写) |
| buildOption | 构建模式使用的具体配置信息 |
内置三种(无需显性配置):debug、release、test。
3.2 buildOptionSet(模块级)
| 字段 | 说明 |
|---|---|
| name | buildOption名称(同模块唯一,不区分大小写) |
| copyFrom | 从本模块已有的buildOption复制配置后再覆写 |
内置三种:default、debug、release。
3.3 buildModeBinder(模块级)
为某一buildMode建立target与buildOption之间的映射关系。
| 字段 | 说明 |
|---|---|
| buildModeName | 指定待建立映射的buildMode(须在工程级buildModeSet中选取) |
| mappings | 绑定target使用的buildOption(targetName + buildOptionName) |
四、默认绑定规则
当buildModeBinder未定义target与buildOption的匹配关系时:
| buildMode | target匹配 | ohosTest匹配 |
|---|---|---|
| release | release option | default option |
| debug | debug option | default option |
| test | debug option | default option |
| 自定义 | default option | default option |
五、编译选项继承覆写优先级
5.1 优先级顺序(从高到低)
命令行配置 ↓ targets配置 ↓ buildOptionSet配置 ↓ buildOption配置 ↓ products配置 ↓ buildModeSet配置5.2 合并规则
| 规则 | 说明 |
|---|---|
| product优先级 | 工程级product的buildOption > buildMode的buildOption(继承覆写) |
| 模块级优先级 | buildOptionSet > buildOption(继承覆写) |
| target优先级 | target中的buildOption > buildOptionSet(继承覆写) |
| 命令行最高 | 在已整合配置基础上覆写 |
鸿蒙构建模式通过工程级buildModeSet定义buildMode(debug/release/test/自定义),模块级buildOptionSet定义buildOption,buildModeBinder绑定target与buildOption的映射关系,优先级为命令行 > targets > buildOptionSet > buildOption > products > buildModeSet。