鸿蒙应用开发实战【09】— Hvigor 构建系统与 HAP 打包全流程
·
鸿蒙应用开发实战【09】— Hvigor 构建系统与 HAP 打包全流程
前言
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
开发 HarmonyOS 应用时,理解构建系统是提升效率、排查问题的基础。Hvigor 是华为为 HarmonyOS 定制的构建工具,类似 Android 的 Gradle,负责将 ArkTS 源码、资源文件编译打包成可安装的 HAP(HarmonyOS Ability Package)。本篇从构建配置到命令行操作,完整讲解号码助手的构建流程。
本篇涵盖:Hvigor 构建系统原理、build-profile.json5 配置、oh-package.json5 依赖管理、assembleHap 命令、增量构建、签名配置、HAP 安装部署。
一、Hvigor 构建系统概述
1.1 与 Gradle 的对比
| 特性 | Gradle(Android) | Hvigor(HarmonyOS) |
|---|---|---|
| 配置语言 | Groovy/Kotlin DSL | TypeScript(hvigorfile.ts) |
| 依赖管理 | Maven/Gradle | OHPM(ohpm) |
| 产物格式 | APK/AAB | HAP/APP |
| 增量构建 | ✅ | ✅ |
| 缓存 | Gradle 缓存 | .hvigor/cache |
| 插件体系 | 丰富的社区插件 | @ohos/hvigor-ohos-plugin |
1.2 构建流程全图
图1:从源码到 HAP 的完整构建链路
ArkTS 源码 (.ets)
→ ArkTS 编译器(arkts-compiler)→ JavaScript 中间码
→ 方舟编译器(ark-compiler) → .abc 字节码
→ 资源打包器 → resources.index
→ Hvigor 链接器 → entry-default.hap
→ 签名工具(可选) → entry-default-signed.hap
二、项目构建配置文件解析
2.1 build-profile.json5 — 构建总配置
// /build-profile.json5(项目根)
{
"app": {
"signingConfigs": [], // 签名配置列表(Release 时填写)
"products": [
{
"name": "default",
"runtimeOS": "HarmonyOS", // 目标运行时:纯鸿蒙
"compileSdkVersion": "6.1.0.66",
"compatibleSdkVersion": "6.1.0.66",
"targetSdkVersion": "6.1.0.66",
"bundleType": "app"
}
],
"buildModeSet": [
{ "name": "debug" },
{ "name": "release" }
]
},
"modules": [
{
"name": "entry", // 模块名(唯一)
"srcPath": "./entry", // 模块源码路径
"targets": [
{
"name": "default",
"applyToProducts": ["default"]
}
]
}
]
}
关键字段解释:
| 字段 | 含义 | 注意事项 |
|---|---|---|
runtimeOS |
目标操作系统 | "HarmonyOS" 表示纯鸿蒙,不兼容 Android |
compileSdkVersion |
编译时 SDK 版本 | 与 DevEco Studio 安装的 SDK 版本一致 |
compatibleSdkVersion |
最低兼容版本 | 决定应用能在哪些系统版本上运行 |
bundleType |
包类型 | "app" 普通应用,"atomicService" 元服务 |
2.2 entry/build-profile.json5 — 模块构建配置
// entry/build-profile.json5
{
"apiType": "stageMode", // 必须是 Stage 模型
"buildOption": {
"strictMode": {
"caseSensitiveCheck": true // 文件名大小写敏感检查(避免跨平台问题)
},
"arkOptions": {
"runtimeOnly": {
"sources": [] // 仅在运行时包含的 ArkTS 文件(通常为空)
}
}
},
"targets": [
{
"name": "default",
"runtimeOS": "HarmonyOS"
}
]
}
2.3 oh-package.json5 — 依赖管理
// /oh-package.json5(项目根)
{
"modelVersion": "5.0.0",
"name": "number-assistant",
"version": "1.0.0",
"license": "ISC",
"devDependencies": {
"@ohos/hypium": "1.0.25" // 单元测试框架(devDependency)
}
}
// entry/oh-package.json5(模块级)
{
"modelVersion": "5.0.0",
"name": "entry",
"version": "1.0.0",
"dependencies": {} // 业务依赖(目前无三方库)
}
三、hvigorfile.ts — 构建脚本
3.1 项目根 hvigorfile.ts
// hvigorfile.ts(项目根)
import { appTasks } from '@ohos/hvigor-ohos-plugin'
export default {
system: appTasks, // 使用标准应用任务集
plugins: [] // 无自定义插件
}
3.2 entry/hvigorfile.ts
// entry/hvigorfile.ts(模块级)
import { harTasks } from '@ohos/hvigor-ohos-plugin'
export default {
system: harTasks, // entry 使用 HAR 任务(HAP 的子集)
plugins: []
}
说明:Hvigor 使用 TypeScript 编写构建脚本(与 Gradle 的 Groovy/Kotlin 类似),可以在构建脚本中编写自定义逻辑,例如读取环境变量、条件编译等。
四、命令行构建操作
4.1 环境变量配置
# 在终端设置 SDK 路径(DevEco Studio 安装后)
export DEVECO_SDK_HOME="/Applications/DevEco-Studio.app/Contents/sdk"
export PATH="/Applications/DevEco-Studio.app/Contents/tools/node/bin:$PATH"
# 验证配置
/Applications/DevEco-Studio.app/Contents/tools/hvigor/bin/hvigorw --version
4.2 常用构建命令
# 进入项目目录
cd /Users/fiona/Downloads/haomazhushou/app
# ── 常用命令 ──
# 编译 Debug HAP(最常用)
./hvigor/bin/hvigorw assembleHap --no-daemon
# 编译特定模块
./hvigor/bin/hvigorw :entry:default@assembleHap --no-daemon
# 清除编译缓存
./hvigor/bin/hvigorw clean --no-daemon
# 查看所有可用任务
./hvigor/bin/hvigorw tasks
# 带详细日志
./hvigor/bin/hvigorw assembleHap --no-daemon --stacktrace
4.3 构建产物路径
# Debug HAP 产物位置
entry/build/default/outputs/default/entry-default-unsigned.hap
# 查看 HAP 大小
ls -lh entry/build/default/outputs/default/*.hap
# 使用 zip 工具查看 HAP 内容(HAP 本质是 zip)
unzip -l entry/build/default/outputs/default/entry-default-unsigned.hap
五、增量构建与缓存机制
5.1 增量构建原理
Hvigor 使用任务依赖图 + 输入输出签名实现增量构建:
第一次构建:编译所有 .ets 文件 → 生成 .abc 字节码 → 打包 HAP
修改一个文件后:
├── 只重新编译修改的文件
├── 更新依赖该文件的其他文件
└── 重新打包(链接阶段)
实测速度对比(号码助手,14 个页面):
- 首次构建:约 20-30 秒
- 修改 1 个页面后增量构建:约 3-5 秒
- 无修改再次构建(缓存):约 1-2 秒
5.2 缓存目录结构
.hvigor/
├── cache/ # 增量构建缓存
│ ├── *.task-cache # 任务结果缓存
│ └── *.file-cache # 文件编译缓存
├── outputs/
│ ├── build-logs/
│ │ └── build.log # 详细构建日志(出错时必看)
│ └── report/ # 构建报告
└── dependencyMap/ # 依赖关系图
5.3 查看构建错误详情
# 构建失败时,查看详细错误
cat .hvigor/outputs/build-logs/build.log | grep -E "ERROR|error TS"
# 号码助手常见错误示例
# ERROR: ArkTS:ERROR File: .../HomePage.ets:505:45
# Object literal must correspond to some declared class or interface
# (arkts-no-untyped-obj-literals)
六、Debug 与 Release 构建差异
6.1 Debug 构建
// Debug 构建特点
// - 不需要签名(可直接安装到开发设备)
// - 包含调试符号(支持断点调试)
// - ArkTS 编译为 JS(便于调试)
// - 包体较大(约 3-10MB)
6.2 Release 构建
// build-profile.json5 — 配置 Release 签名
{
"app": {
"signingConfigs": [{
"name": "default",
"type": "HarmonyOS",
"material": {
"certpath": "path/to/certificate.cer", // 证书文件
"keyAlias": "key_alias",
"keyPassword": "密码(建议用环境变量)",
"profile": "path/to/profile.p7b", // 分发描述文件
"signAlg": "SHA256withECDSA",
"storeFile": "path/to/keystore.p12", // 密钥库
"storePassword": "密码"
}
}],
"products": [{
"name": "default",
"signingConfig": "default" // 关联签名配置
}]
}
}
# 编译 Release HAP(带签名)
./hvigor/bin/hvigorw assembleHap --mode release --no-daemon
七、ohpm — HarmonyOS 包管理器
7.1 基本操作
# ohpm 路径
/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin/ohpm
# 安装所有依赖(类似 npm install)
ohpm install
# 安装指定包
ohpm install @ohos/axios
# 查看已安装包
ohpm list
# 更新包
ohpm update @ohos/hypium
# 配置镜像源(网络问题时使用)
ohpm config set registry https://repo.harmonyos.com/ohpm/
7.2 oh-package-lock.json5 — 锁定文件
// oh-package-lock.json5(自动生成,不要手动修改)
{
"modelVersion": "5.0.0",
"selfDependency": {
"@ohos/hypium": {
"version": "1.0.25",
"resolved": "https://repo.harmonyos.com/ohpm/@ohos/hypium/-/@ohos-hypium-1.0.25.har",
"integrity": "sha512-...",
"dependencies": {}
}
}
}
八、在 DevEco Studio 中构建
8.1 GUI 构建操作
菜单:Build → Build Hap(s)/APP(s) → Build Hap(s)
↑ Debug 构建(开发用)
菜单:Build → Build Hap(s)/APP(s) → Build APP(s)
↑ 打 .app 包(用于 AGC 上架)
菜单:Build → Clean Project
↑ 清除所有缓存,全量重新构建
8.2 快速安装到设备
运行按钮(▶):编译 + 安装 + 启动应用
调试按钮(🐛):编译 + 安装 + 启动 + 附加调试器
快捷键:
- macOS:⌘R 运行,⌃D 调试
- Windows:Shift+F10 运行,Shift+F9 调试
九、本篇小结
| 知识点 | 核心要点 |
|---|---|
| Hvigor | HarmonyOS 构建工具,类似 Gradle,用 TS 编写脚本 |
| HAP | HarmonyOS Ability Package,应用安装包 |
| build-profile.json5 | 构建总配置:SDK 版本、签名、模块列表 |
| oh-package.json5 | 依赖声明文件,ohpm 解析 |
| assembleHap | 编译打包命令,–no-daemon 避免守护进程 |
| 增量构建 | 修改单文件后仅重编改动部分,速度快 |
| 错误排查 | .hvigor/outputs/build-logs/build.log |
参考资料
- 鸿蒙应用开发实战【01】— 项目概述与开发环境搭建
- Hvigor 构建工具指南
- HAP 打包说明
- ohpm 使用指南
- 应用签名指导
- build-profile.json5 配置说明
- DevEco Studio 构建指南
- AppGallery Connect 发布
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
更多推荐




所有评论(0)