在鸿蒙应用开发中,构建效率直接影响开发体验。Hvigor提供了并行构建和增量构建两种优化机制,帮助缩短构建时间。

一、并行构建

大部分工程包含多个子工程,其中一些子工程相互独立(无状态共享)。通过并行构建可以有效减少多个子工程的整体构建时间。

注意:子工程之间存在大量依赖关系时,可能无法显著缩短构建时间,节省时间取决于工程结构和依赖关系。

Hvigor默认开启并行构建。

三种控制方式

控制方式 操作
IDE设置 File → Settings → Build, Execution, Deployment → Build Tools → Hvigor → 勾选/取消"Execute tasks in parallel mode"
命令行 启用:hvigorw <task> --parallel
关闭:hvigorw <task> --no-parallel
配置文件 hvigor-config.json5中配置execution.parallel选项

二、增量构建

增量构建是Hvigor执行任务的优化机制:如果在两次执行任务过程中,任务的输入和输出没有更改,Hvigor会跳过该任务的执行

Hvigor默认启用增量构建。

三种控制方式

控制方式 操作
IDE设置 File → Settings → Build, Execution, Deployment → Build Tools → Hvigor → 勾选/取消"Re-execute the task in incremental mode"
命令行 启用:hvigorw <task> --incremental
关闭:hvigorw <task> --no-incremental
配置文件 hvigor-config.json5中配置execution.incremental选项

增量构建标识

当控制台输出任务被标记为UP-TO-DATE时,说明增量构建正在工作,该任务被跳过。

全量构建 vs 增量构建

场景 构建类型
执行Build → Clean Project后重新build 全量构建
未执行Clean Project,直接重新build 增量构建

任务的输入和输出

增量构建的核心是记录和比较任务的输入输出

概念 说明
输入 影响任务执行结果的属性(源文件、参数等)
输出 任务执行产生的产物(编译文件、打包文件等)

规则说明

规则 说明
至少定义一个输出 否则增量构建无法工作
影响输出的属性必须注册为输入 否则任务可能被错误跳过
不影响输出的属性不要注册为输入 否则任务可能被不必要执行
非确定性任务不应配置为增量任务 相同输入可能产生不同输出,最新检查无效

工作原理

第一次执行
    ↓
获取输入快照(文件名、路径、大小、修改时间、哈希值)
    ↓
执行任务成功
    ↓
获取输出快照(文件名、路径、大小、修改时间、哈希值)
    ↓
存储输入和输出快照信息
    ↓
(任务快照也一并存储)

第二次执行前
    ↓
获取输入和输出的新快照信息
    ↓
比较新快照与之前存储的快照
    ├── 相同 → 任务UP-TO-DATE,跳过执行
    └── 不同 → 执行任务 → 存储新快照

   鸿蒙提升构建效率通过并行构建(默认开启,多子工程独立时有效)和增量构建(默认开启,输入输出无变化时任务标记为UP-TO-DATE跳过执行)两种机制实现,均支持IDE设置、命令行参数(--parallel/--incremental)和hvigor-config.json5配置,增量构建需任务至少定义一个输出,影响输出的属性必须注册为输入。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐