DevEco Hvigor 高效编译,构建过程新秘籍
作者:Lewei,华为终端 BG 编译构建技术专家
DevEco Hvigor 是使用 TypeScript 语言开发的全新轻量化的任务调度工具,针对 HarmonyOS 应用提供了一系列编译构建任务,支持将 HarmonyOS 应用编译构建出对应的产物包。作为一款 HarmonyOS 应用编译构建任务流工具,DevEco Hvigor 具备许多可以提升构建效率的特性,支持多产物差异化构建,也支持 HarmonyOS 应用可分可合等特性。可以称得上是"麻雀虽小五脏俱全"。
一、任务并行
DevEco Hvigor 具备任务并行执行的能力。对于 C++编译、ArkTS 任务等耗时而没有依赖关系的任务,DevEco Hvigor 可以使用不同的工作线程并行执行,提高构建效率。在多模块的中大型工程中,将带来可观的耗时节省。
在 DevEco Studio 中开启 DevEco Hvigor 的并行编译构建能力,需要在 DevEco Studio 中打开 Settings - Build, Execution, Development - Build Tools - Hvigor 选项,并勾选"Execute tasks in parallel mode"。
二、任务增量
HarmonyOS 应用的编译构建流程是由任务组成的。DevEco Hvigor 具备任务增量执行的能力,通过判断任务的输入与输出,对于输入与输出没有变化的任务,可以复用上次构建产物,从而跳过对应的任务,节省构建时间。在 DevEco Studio 中开启 DevEco Hvigor 的任务增量能力,需要在 DevEco Studio 中打开 Settings - Build, Execution, Development - Build Tools - Hvigor 选项,并勾选"Re-execute the task in incremental mode"。
三、常驻进程
DevEco Hvigor 提供了常驻进程的功能机制。通过将进程常驻在内存中,一方面避免了 Node 进程重复启动、减少了加载 js 文件的耗时,另一方面可以复用构建过程中的增量缓存、减少增量缓存信息的读取与落盘操作。另外,启用 DevEco Hvigor 的常驻进程功能,还可以支持预览器的急速预览功能和调试的 Hot reload 功能。DevEco Hvigor 通过对代码文件的监听,可以快速编译代码片段,急速更新预览画面和在设备上实时调试代码修改。
在 DevEco Studio 中开启 DevEco Hvigor 的常驻进程构建能力,需要在 DevEco Studio 中打开 Settings - Build, Execution, Development - Build Tools - Hvigor 选项,并勾选"Enable the Daemon for tasks"。
在命令行中,可以通过使用 hvigorw 命令行工具来查看常驻进程状态或关闭常驻进程。
● 在工程目录下执行./hvigorw --status-daemon,可以查看所有常驻进程的状态。
● 在工程目录下执行./hvigorw --stop-daemon,可以关闭当前工程对应的常驻进程。
● 在工程目录下执行./hvigorw --stop-daemon-all,可以关闭当前运行的所有 DevEco Hvigor 常驻进程。
四、构建过程可视化
DevEco Hvigor 会记录每次构建任务的日志信息,并通过可视化的图表界面进行展示。记录的信息包括任务执行的耗时与线程、ArkTS 编译中的各环节的细分耗时情况等。开发者可以藉此分析构建过程中的耗时情况、进而改善构建效率。
在 DevEco Studio 中开启 DevEco Hvigor 的常驻进程构建能力,需要在 DevEco Studio 中打开 Settings - Build, Execution, Development - Build Tools - Hvigor 选项,并勾选"Enable the Daemon for tasks"。
随后,可以点击 DevEco Studio 下方的"Build Analyzer"标签页,查看构建过程中的日志信息和耗时情况。
五、差异化构建打包
通常情况下,应用厂商会根据不同的部署环境、不同的目标人群以及不同的运行环境等,将同一个应用定制为不同的版本。DevEco Hvigor 支持差异化构建打包,在构建配置文件中将差异化部分显示配置出来,即可在编译构建过程中实现一个应用构建出不同的目标产物版本,从而实现源代码、资源文件等的高效复用。
通过配置 Target,每个 HAP 包都可以定制功能和资源。在每个 HAP 模块的 build-profile.json5 中,可以配置该模块支持的 Targets:
在每个 target 中,可以定制其页面源码集、资源目录、支持的设备类型等,比如当你只希望某个 hap 对应平板设备、而某个 hap 包对应手机配置时,可以如下配置:
通过配置将哪些 HAP 模块的 Target 与 Product 绑定,让定制化的 HAP 可以组合成 APP 包、发布上架应用市场。在工程级的 build-profile.json5 中,先定义 Product,并可以定制使用不同的 bundleName 和签名材料:
再定义需要将哪些 HAP 模块的 Target 与 Product 绑定,就可以在上架应用商店时提供不同的 APP 包。
最后,在 DevEco Studio 中,可以使用可视化界面来选择运行和调试指定模块和 Target。从 DevEco Studio 界面的右上角打开面板,执行需要调试或运行的 Target,DevEco Hvigor 就会执行指定模块、指定 Target 的编译构建,并在预览和调试中都使用该配置。
六、未来特性与总结
目前,DevEco Hvigor 作为全新开发的编译构建工具,虽然已经有了不少可以提升编译效率的地方,但仍有许多新的特性、功能和性能优化还在路上。比如,DevEco Hvigor 即将开放的自定义构建任务插件能力和编译流程插桩接口、在运行时获取构建配置的 BuildProfile 机制等。我们会继续努力,力求将更好的编译效率、更便捷的构建体验,带给每一位 HarmonyOS 应用的开发者。
评论