跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
TypeScript大前端

HarmonyOS Next DevEco Studio 编译选项定制指南

HarmonyOS Next 开发中 DevEco Studio 的编译模式定制方法。内容包括通过界面或命令行指定编译模式(debug/release),在工程级和模块级 build-profile.json5 中定义编译选项及绑定关系,以及编译选项的继承覆写优先级规则。提供了具体的 JSON 配置示例和构建命令,帮助开发者灵活控制构建行为,如混淆和调试开关。

leon发布于 2026/3/27更新于 2026/7/2147 浏览
HarmonyOS Next DevEco Studio 编译选项定制指南

指定编译模式

界面设置

DevEco Studio 支持界面配置 Build Mode 配置选项,点击右上角图标选择编译模式。

内置三个选项:Default,debug,release。 如果在 build-profile.json5 文件中,自定义了其他编译模式,Build Mode 配置界面会提供对应选项。

  • Default:默认选项,选择此项,构建 APP 包,使用 release 编译模式;构建 HAP/HSP/HAR 包,使用 debug 编译模式。
  • debug:构建 APP/HAP/HSP/HAR 包,均使用 debug 编译模式,buildOption 中的 debuggable 默认为 true。此时的构建产物默认包含大量的调试信息,例如变量名、函数名、行号等,可以直接进行调试。这些调试信息会增加程序的体积,可能导致程序的运行速度降低。
  • release:构建 APP/HAP/HSP/HAR 包,均使用 release 编译模式,buildOption 中的 debuggable 默认为 false。此时的构建产物会去掉大量的调试信息,只包含应用程序必要的代码和数据,以减小程序的体积,并且会对编译的字节码进行优化,提高程序的运行速度。

说明

  • DevEco Studio 界面设置或命令行中指定的 buildMode 构建模式,只代表当前选择的 buildMode 的名称,最终编译产物是否是 Debug 应用取决于 buildOption 配置中的 debuggable 字段,构建模式使用的具体 buildOption 配置信息。
  • LiteWearable 设备使用标准 JS 运行时,因此对应的应用开发在 release 模式下的构建产物中包含 JS 源码,请注意代码资产保护。

命令行设置

  • 使用命令行参数 -p buildMode 指定编译模式,比如指定 "release" 编译模式,构建 entry 模块的 HAP 包:
hvigorw --mode module -p product=default -p module=entry@default -p buildMode=release assembleHap
  • 使用命令行参数 -p debuggable=true 指定 "debug" 编译模式,-p debuggable=false 指定 "release" 编译模式,比如指定 "release" 编译模式,构建 entry 模块的 HAP 包:
hvigorw --mode module -p product=default -p module=entry@default -p debuggable=false assembleHap

当未指定编译模式时,构建 APP 包,默认 release 模式;构建 HAP/HSP/HAR 包时,默认 debug 模式。

定制编译模式

Hvigor 支持定制编译模式,采用 buildOption 字段声明编译选项,并通过 buildModeBinder 来绑定 target、buildOption 以及 buildMode 三者之间的组合关系。

定义编译选项

工程级 build-profile.json5 文件:

字段类型是否必填说明
buildModeSetarray否构建模式合集,可配置多个。
namestring是构建模式名称。内置三种类型,此三项无需用户显性配置:debug(开发、调试推荐选项)、release(打包、发布推荐选项)、test(运行 ohosTest 测试套件推荐选项)。项目中全局唯一,不区分大小写。仅允许在工程级 build-profile.json5 中声明、定义。相同的 buildMode 会被覆盖,按照配置顺序,后者覆盖前者。三种模式均支持自定义。
buildOptionobject否构建模式使用的具体配置信息
productsarray否产品品类,可配置多个。
buildOptionobject否产品的编译构建配置。product 的 buildOption 会对 buildMode 的 buildOption 继承覆写,即相同配置项 product 的优先级更高。

模块级 build-profile.json5 文件:

字段类型是否必填说明
buildOptionobject否构建模式使用的具体配置信息,其中仅支持配置 resOptions,externalNativeOptions,sourceOption,nativeLib,napiLibFilterOption 和 arkOptions 字段。
buildOptionSetarray否buildOption 的集合,定义可用的底层配置选项集。
namestring是buildOption 的名称。当前模块级 build-profile.json5 中已有顶层独立的 buildOption 配置,buildOptionSet 优先级比 buildOption 更高。同模块中唯一,不区分大小写。相同的名称会被覆盖,按照配置顺序,后者覆盖前者。内置三种:default、debug、release。
copyFromstring否配置已定义的 buildOption 的 name,表示从本模块已有的 buildOption 复制配置,然后再覆写。仅限在同一模块的 build-profile.json5 中复制。目标 buildOption 不存在时,构建告警,回落为从内置的 default 选项中复制。
buildModeBinderarray否为某一 buildMode 建立 target 与 buildOption 之间的映射关系。
buildModeNamestring是指定待建立映射的 buildMode。模块级中无法定义 buildMode,此处名称须在工程级的 buildModeSet 中选取。对于系统内置的三种 buildMode(debug / release / test), Hvigor 会分配默认绑定:debug mode 优先分配 debug buildOption,测试包(ohosTest)分配 default buildOption。release mode 优先分配 release buildOption,测试包(ohosTest)分配 default buildOption。test mode 测试包(ohosTest)分配 default buildOption,主包分配 debug buildOption。
mappingsarray否绑定 target 使用的 buildOption。
targetNamestring是指定待绑定的 target。仅在本模块选择。
buildOptionNamestring是指定待绑定的 buildOption。仅在本模块选择。
targetsconfig buildOptionobject否

合并编译选项规则

  1. 工程级默认有三种 buildMode:debug,release,test。
  2. 模块级默认有三种 buildOption:default,debug,release。
  3. 当 buildModeBinder 未定义 target 与 buildOption 的匹配关系时:
    • release 构建模式:为 target 匹配 release option,但 ohosTest 分配 default option;
    • debug 构建模式:为 target 匹配 debug option,但 ohosTest 分配 default option;
    • test 构建模式:为 target 匹配 debug option,ohosTest 分配 default option;
    • 自定义构建模式:所有 target 均匹配 default option。
  4. 工程级 build-profile.json5 中 product 的 buildOption 会对 buildMode 的 buildOption 继承覆写,即相同配置项 product 的优先级更高。
  5. 模块级别的 buildOption 作为一个公共配置会被继承到 buildOptionSet 中的每一个 buildOption 中,如有 copyFrom 字段,也是先继承再进行复制,即 buildOptionSet 优先级比 buildOption 更高。
  6. 根据模块级中的 buildModeBinder 字段可以找到 target 对应的唯一 buildOption;target 中的 buildOption 优先级更高,采用继承覆盖策略与对应 buildOption 进行合并。
  7. 命令行选项为最高优先级,在已整合的配置项基础上,采用覆写的方式,定点修订。

编译选项继承覆写关系

优先级:命令行配置 > targets 配置 > buildOptionSet 配置 > buildOption 配置 > products 配置 > buildModeSet 配置

实践说明

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

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

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

工程级 build-profile.json5 示例

{
  "app": {
    "signingConfigs": [],
    "products": [
      {
        "name": "default",
        "signingConfig": "default",
        "compatibleSdkVersion": "5.0.2(14)",
        "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 示例

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"
    }
  ]
}

指定构建模式

命令行

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

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

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

hvigorw --mode project -p product=default -p buildMode=release assembleApp
DevEco Studio 界面

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

目录

  1. 指定编译模式
  2. 界面设置
  3. 命令行设置
  4. 定制编译模式
  5. 定义编译选项
  6. 合并编译选项规则
  7. 编译选项继承覆写关系
  8. 实践说明
  9. 工程级 build-profile.json5 示例
  10. 模块级 build-profile.json5 示例
  11. entry 模块
  12. 指定构建模式
  13. 命令行
  14. DevEco Studio 界面
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • C++ 红黑树:原理、旋转与完整实现
  • WebGIS 开发中 WKT 转 GeoJSON 的技巧与 Leaflet 加载应用
  • AQS 核心机制与 CountDownLatch 源码解析
  • Web 转 Android APK:基于 Docker 的自动化打包实践
  • ComfyUI 提示词助手实战:利用自动化流程提升 AI 绘画效率
  • 人形机器人:百万亿美元赛道的终极逻辑与通用平台化
  • Web 开发基础:前后端概念解析及 F12 Network 调试
  • Seedream 4.0 深度测评:多模态 AI 图像生成与编辑实战
  • 前缀和算法实战:和为 K 的子数组与和可被 K 整除的子数组
  • Java 并发编程:核心原理、实战与避坑
  • 融合条件扩散与图学习的 EEG 信号重建与认知负荷识别
  • 无人机智能控制 5 大核心技巧与 Mission Planner 实战指南
  • Linux 进程间通信进阶:管道与共享内存详解
  • MySQL 分库分表实战:垂直水平拆分策略与核心难题解决
  • JavaAI 工具箱在工程化开发中的实际应用与效能分析
  • Python 环境搭建与安装配置完整指南
  • Flutter 使用 groq_sdk 在 OpenHarmony 上实现 LPU 推理应用
  • AIGC 技术解析:人工智能生成内容的现状与未来
  • 基于 AutoTrain 与 Colab 免费微调大语言模型指南
  • n8n 集成飞书机器人:Webhook 签名与 Crypto 节点配置实战

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online