构建任务说明
======

本章节将对构建的任务进行说明，可以更直观地了解到构建的任务流程。

#### 任务流程图

#### \[h2\]HAP基础任务流程图

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/65/v3/csWTr1HvQ3epeFOJoCd1Vw/zh-cn_image_0000002594634668.png?HW-CC-KV=V1&HW-CC-Date=20260612T073906Z&HW-CC-Expire=86400&HW-CC-Sign=2BCBAB9FB76C37EB8D3126B2FFBB79AE6612D5B3D28D778C8EFB609C87CA4ADB)

#### \[h2\]HSP基础任务流程图

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/7d/v3/rXqoGlcyR6yTs9TztICy9A/zh-cn_image_0000002594634670.png?HW-CC-KV=V1&HW-CC-Date=20260612T073906Z&HW-CC-Expire=86400&HW-CC-Sign=F7ABF0677A86A3A07CBBDFA801C5615AA68B0925ED8874D9BCDBD8ECB7A6D55D)

#### \[h2\]HAR基础任务流程图

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ac/v3/crBFvAcFQJiWWw2swCTxDw/zh-cn_image_0000002625074249.png?HW-CC-KV=V1&HW-CC-Date=20260612T073906Z&HW-CC-Expire=86400&HW-CC-Sign=F31FCC43E3363A96833D8B7A09F21C3D31F77A4838C342D9F7BA97BD695B326F)

#### 使用命令查看任务

在DevEco Studio中可以通过以下命令获得任务相关的信息。

hvigorw taskTree

获取任务树时会根据工程中的模块，将模块中注册的任务以下图形式输出：

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/1e/v3/lPjh7QkqQYatMDmZtYrPmg/zh-cn_image_0000002624994105.png?HW-CC-KV=V1&HW-CC-Date=20260612T073906Z&HW-CC-Expire=86400&HW-CC-Sign=ECE1441247C7211C617E32EFDC3739E30D00BAF8D9456E65CC6F6B03814A8279)

执行顺序举例说明：如图所示，assembleHap依赖CollectDebugSymbol，CollectDebugSymbol依赖于PackageHap；则任务执行顺序为PackageHap->CollectDebugSymbol->assembleHap。

#### 任务详细说明

根据任务职能的不同，主要分为以下几种任务类型。

| 
任务类别

 | 

任务说明

 |
| :-- | :-- |
| 

Hook

 | 

hook任务

 |
| 

ArkTS

 | 

ArkTS编译相关任务

 |
| 

JS

 | 

JS编译相关任务

 |
| 

Resources

 | 

资源编译、处理、链接、合并相关的任务

 |
| 

Package

 | 

打包相关的任务

 |
| 

Sign

 | 

签名相关的任务

 |
| 

Verification

 | 

验证项目或者依赖项设置等相关的任务

 |
| 

Generate

 | 

生成和转换前置文件等相关的任务

 |
| 

Config

 | 

生成，合并，处理配置文件等相关的任务

 |
| 

Native

 | 

Native编译等相关的任务

 |
| 

Help

 | 

查询hvigor帮助信息的相关任务

 |
| 

Other

 | 

未分类的任务

 |

#### \[h2\]Hook

*   assembleHap 编译构建hap模块的Hook任务。
*   assembleHsp 编译构建hsp模块的Hook任务。
*   assembleHar 编译构建har模块的Hook任务。
*   assembleApp 编译构建app模块的Hook任务。
*   assembleDevHqf 支持增量部署的Hook任务。
*   HotReloadBuild HotReloadArkTS前置Hook任务。
*   PreviewBuild PreviewArkTS前置Hook任务。
*   buildHotReloadResource 热加载资源相关前置Hook任务。
*   PreviewHookCompileResource 预览时资源编译处理是否支持Restool增量方式编译的Hook任务。
*   GenerateBuildProfile 生成BuildProfile.ets文件的Hook任务。
*   BuildUnitTestHook 单元测试编译资源相关前置Hook任务。
*   buildPreviewerResource 预览资源相关前置Hook任务。
*   compileNative native资源相关前置Hook任务。
*   UnitTestBuild UnitTestArkTS前置Hook任务。
*   test 使用命令行执行Local Test的Hook任务。
*   onDeviceTest 使用命令行执行Instrument Test的Hook任务。

#### \[h2\]ArkTS

*   CompileArkTS/BuildArkTS 通过rollup调用loader编译ArkTS源码。
*   PreviewArkTS 预览模式下，通过rollup调用loader编译ArkTS源码。
*   HotReloadArkTS 热加载场景下，通过rollup调用loader编译ArkTS源码。
*   OhosTestCompileArkTS/OhosTestBuildArkTS ohos测试场景下，通过rollup调用loader编译ArkTS源码。
*   HarCompileArkTS/HarBuildArkTS 构建HAR包场景下，通过rollup调用loader编译ArkTS源码。
*   UnitTestArkTS 单元测试场景下，通过rollup调用loader编译ArkTS源码。

#### \[h2\]JS

*   CompileJS/BuildJS 调用loader编译js源码。
*   OhosTestCompileJS/OhosTestBuildJS ohos测试场景下，调用loader编译js源码。

#### \[h2\]Resources

*   ProcessResource 处理和生成用文件方式编译资源的中间文件。
*   PreviewProcessResource 预览场景下，处理和生成用文件方式编译资源的中间文件。
*   CompileResource 调用restool 编译资源。
*   PreviewCompileResource 预览场景下，调用restool编译资源。
*   ProcessLibs 收集hap和har依赖中的.so文件。

#### \[h2\]Package

*   PackageHap 调用打包工具打hap包。
*   PackageHar 调用打包工具打har包。
*   PackageHsp 调用打包工具打hsp包。
*   PackageApp 调用打包工具打app包。
*   PackageHqf 调用打包工具打增量包。
*   PackageSharedHar 调用打包工具打hsp模块的har包。
*   PackageSharedTgz 调用打包工具将hsp模块生成的未签名hap和har包打包成tgz包。
*   PackageSignHar 调用打包工具打带签名的har包，当前仅在daemon模式下生效。

#### \[h2\]Sign

*   SignHap 调用签名工具给hap包签名。
*   SignHsp 调用签名工具给hsp包签名。
*   SignApp 调用签名工具给app包签名。
*   SignHqf 调用签名工具给增量包签名。
*   SignModuleRemoteHsp 调用签名工具给模块级ohpm仓上的hsp包签名。
*   SignProjectRemoteHsp 调用签名工具给工程级ohpm仓上的hsp包签名。

#### \[h2\]Verification

*   PreBuild 模块级预检查任务。
*   PreBuildApp 工程级预检查任务。
*   PreCheckSyscap syscap相关配置预检查任务。

#### \[h2\]Generate

*   GenerateLoaderJson 生成loader.json文件。
*   GenerateMetadata 生成metadata.json文件。
*   SyscapTransform syscap转换任务。
*   MakePackInfo 生成模块级别的pack.info。
*   MakeProjectPackInfo 生成工程级别的pack.info。
*   ProcessPackageJson 对package.json文件进行处理。
*   ProcessOHPackageJson 对oh\_package.json5文件进行处理。
*   GeneratePackRes 生成pack.res文件。
*   CreateBuildProfile 生成hap/hsp的BuildProfile.ets文件。
*   CreateHarBuildProfile 生成har的BuildProfile.ets文件。
*   PrepareQuickfix 通过校验获取增量文件并输出到quickfix.json文件中。

#### \[h2\]Config

*   ProcessProfile 处理module.json5文件。
*   PrepareSharedHarResource 生成打包shared library的package.json和module.json。
*   UnitTestProcessProfile UnitTestBuild场景处理构建中间产物module.json文件。
*   MergeProfile 合并module.json5文件。
*   PreviewUpdateAssets 预览模式下，Stage模型在编译预览代码前更新前置任务生成的module.json和main\_pages.json文件。

#### \[h2\]Native

*   BuildNativeWithNinja 将native代码编译成so文件。
*   BuildNativeWithCmake 用CMake编译CPP源码。

#### \[h2\]Help

*   tasks 查看hvigor的全部任务及详情。
*   taskTree 查看当前工程涉及的任务树。

#### \[h2\]Other

*   ReplaceUnitTestIndexFile 单元测试替换入口文件。
*   ReplacePreviewerPage 接受预览器提供的参数替换页面文件中的参数。
*   OhosTestCopyMockConfigJson 测试框架执行mock时将mock-config.json拷贝到测试包中。
*   clean 清理生成的Build目录。
*   collectCoverage 基于仪表打点数据生成覆盖率统计报表。

#### \[h2\]Sync

*   init 初始化工程。

#### \[h2\]Init

该任务类型与Sync下的init不同，该过程中无具体任务，主要负责执行调用hvigor前的准备工作。