鸿蒙 构建效率提升:并行构建和增量构建

鸿蒙 构建效率提升:并行构建和增量构建 在鸿蒙应用开发中构建效率直接影响开发体验。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配置增量构建需任务至少定义一个输出影响输出的属性必须注册为输入。