![]()
在鸿蒙应用开发中,了解构建任务有助于理解编译打包的完整流程。
一、HAP基础任务流程
HAP构建任务的主要流程:依赖处理 → 资源编译 → ArkTS编译 → 打包 → 签名。
二、HSP基础任务流程
HSP构建任务的主要流程与HAP类似,但涉及动态共享包的独立打包流程。
三、HAR基础任务流程
HAR构建任务的主要流程:资源处理 → ArkTS编译 → HAR打包。
四、使用命令查看任务
在DevEco Studio中可以通过以下命令获得任务相关的信息:
| 命令 | 说明 |
|---|
hvigorw taskTree | 获取任务树,根据工程中的模块,将模块中注册的任务以树形形式输出 |
执行顺序示例
assembleHap 依赖 CollectDebugSymbol CollectDebugSymbol 依赖于 PackageHap → 执行顺序:PackageHap → CollectDebugSymbol → assembleHap
五、任务说明
根据任务职能的不同,主要分为以下几种任务类型:
| 任务类别 | 任务说明 |
|---|
| Hook | Hook任务 |
| ArkTS | ArkTS编译相关任务 |
| JS | JS编译相关任务 |
| Resources | 资源编译、处理、链接、合并相关的任务 |
| Package | 打包相关的任务 |
| Sign | 签名相关的任务 |
| Verification | 验证项目或者依赖项设置等相关的任务 |
| Generate | 生成和转换前置文件等相关的任务 |
| Config | 生成、合并、处理配置文件等相关的任务 |
| Native | Native编译等相关的任务 |
| Help | 查询hvigor帮助信息的相关任务 |
| Other | 未分类的任务 |
六、各任务类别
6.1 Hook
| 任务 | 说明 |
|---|
assembleHap | 编译构建hap模块的Hook任务 |
assembleHsp | 编译构建hsp模块的Hook任务 |
assembleHar | 编译构建har模块的Hook任务 |
assembleApp | 编译构建app模块的Hook任务 |
assembleDevHqf | 支持增量部署的Hook任务 |
HotReloadBuild | HotReloadArkTS前置Hook任务 |
PreviewBuild | PreviewArkTS前置Hook任务 |
buildHotReloadResource | 热加载资源相关前置Hook任务 |
GenerateBuildProfile | 生成BuildProfile.ets文件的Hook任务 |
compileNative | native资源相关前置Hook任务 |
6.2 ArkTS(ArkTS编译相关)
| 任务 | 说明 |
|---|
CompileArkTS/BuildArkTS | 通过rollup调用loader编译ArkTS源码 |
PreviewArkTS | 预览模式下编译ArkTS源码 |
HotReloadArkTS | 热加载场景下编译ArkTS源码 |
OhosTestCompileArkTS/OhosTestBuildArkTS | ohos测试场景下编译ArkTS源码 |
HarCompileArkTS/HarBuildArkTS | 构建HAR包场景下编译ArkTS源码 |
UnitTestArkTS | 单元测试场景下编译ArkTS源码 |
6.3 JS(JS编译相关)
| 任务 | 说明 |
|---|
CompileJS/BuildJS | 调用loader编译js源码 |
OhosTestCompileJS/OhosTestBuildJS | ohos测试场景下编译js源码 |
6.4 Resources(资源编译相关)
| 任务 | 说明 |
|---|
ProcessResource | 处理和生成用文件方式编译资源的中间文件 |
PreviewProcessResource | 预览场景下处理和生成资源中间文件 |
CompileResource | 调用restool编译资源 |
PreviewCompileResource | 预览场景下调用restool编译资源 |
ProcessLibs | 收集hap和har依赖中的.so文件 |
6.5 Package(打包相关)
| 任务 | 说明 |
|---|
PackageHap | 调用打包工具打hap包 |
PackageHar | 调用打包工具打har包 |
PackageHsp | 调用打包工具打hsp包 |
PackageApp | 调用打包工具打app包 |
PackageHqf | 调用打包工具打增量包 |
PackageSharedHar | 调用打包工具打hsp模块的har包 |
PackageSignHar | 调用打包工具打带签名的har包(daemon模式下生效) |
6.6 Sign(签名相关)
| 任务 | 说明 |
|---|
SignHap | 调用签名工具给hap包签名 |
SignHsp | 调用签名工具给hsp包签名 |
SignApp | 调用签名工具给app包签名 |
SignHqf | 调用签名工具给增量包签名 |
6.7 Verification(验证相关)
| 任务 | 说明 |
|---|
PreBuild | 模块级预检查任务 |
PreBuildApp | 工程级预检查任务 |
PreCheckSyscap | syscap相关配置预检查任务 |
6.8 Generate(生成相关)
| 任务 | 说明 |
|---|
GenerateLoaderJson | 生成loader.json文件 |
GenerateMetadata | 生成metadata.json文件 |
SyscapTransform | syscap转换任务 |
MakePackInfo | 生成模块级别的pack.info |
MakeProjectPackInfo | 生成工程级别的pack.info |
CreateBuildProfile | 生成hap/hsp的BuildProfile.ets文件 |
CreateHarBuildProfile | 生成har的BuildProfile.ets文件 |
6.9 Config(配置相关)
| 任务 | 说明 |
|---|
ProcessProfile | 处理module.json5文件 |
MergeProfile | 合并module.json5文件 |
6.10 Native(Native编译相关)
| 任务 | 说明 |
|---|
BuildNativeWithNinja | 将native代码编译成so文件 |
BuildNativeWithCmake | 用CMake编译CPP源码 |
6.11 Help(帮助相关)
| 任务 | 说明 |
|---|
tasks | 查看hvigor的全部任务及详情 |
taskTree | 查看当前工程涉及的任务树 |
6.12 Other(其他任务)
| 任务 | 说明 |
|---|
ReplaceUnitTestIndexFile | 单元测试替换入口文件 |
clean | 清理生成的Build目录 |
collectCoverage | 基于仪表打点数据生成覆盖率统计报表 |
任务执行流程
依赖处理 → 资源编译(Resources) → ArkTS/JS编译 → 打包(Package) → 签名(Sign)