0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【技术视界】DevEco Hvigor高效编译,构建过程新秘籍

HarmonyOS开发者 来源:未知 2023-09-26 12:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

# 技术视界# 【技术视界】栏目为开发者提供华为研发专家对于HarmonyOS关键技术的专业解读,从不同角度、不同方面帮助开发者更好更快地掌握HarmonyOS相关开发知识。本期文章为大家带来的是华为终端BG编译构建技术专家的分享,希望能为您的开发之路带来启发~ 作者:Lewei,华为终端BG编译构建技术专家

DevEcoHvigor是使用TypeScript语言开发的全新轻量化的任务调度工具,针对HarmonyOS应用提供了一系列编译构建任务,支持将HarmonyOS应用编译构建出对应的产物包。作为一款HarmonyOS应用编译构建任务流工具,DevEco Hvigor具备许多可以提升构建效率的特性,支持多产物差异化构建,也支持HarmonyOS应用可分可合等特性。可以称得上是"麻雀虽小五脏俱全"。

任务并行

DevEco Hvigor具备任务并行执行的能力。对于C++编译、ArkTS任务等耗时而没有依赖关系的任务,DevEcoHvigor可以使用不同的工作线程并行执行,提高构建效率。在多模块的中大型工程中,将带来可观的耗时节省。

在DevEco Studio中开启DevEco Hvigor的并行编译构建能力,需要在DevEcoStudio中打开Settings - Build, Execution,Development - Build Tools - Hvigor选项,并勾选"Executetasks in parallel mode"。

wKgaomUroLKAAAToAAJmi5DP4MQ835.png

任务增量

HarmonyOS应用的编译构建流程是由任务组成的。DevEco Hvigor具备任务增量执行的能力,通过判断任务的输入与输出,对于输入与输出没有变化的任务,可以复用上次构建产物,从而跳过对应的任务,节省构建时间。

在DevEco Studio中开启DevEco Hvigor的任务增量能力,需要在DevEco Studio中打开Settings - Build,Execution, Development - Build Tools - Hvigor选项,并勾选"Re-execute the task in incremental mode"。

wKgaomUroLKAZOopAAJnJ_ZuaEc105.png

常驻进程

DevEco Hvigor提供了常驻进程的功能机制。通过将进程常驻在内存中,一方面避免了Node进程重复启动、减少了加载js文件的耗时,另一方面可以复用构建过程中的增量缓存、减少增量缓存信息的读取与落盘操作。

另外,启用DevEco Hvigor的常驻进程功能,还可以支持预览器的急速预览功能和调试的Hot reload功能。DevEco Hvigor通过对代码文件的监听,可以快速编译代码片段,急速更新预览画面和在设备上实时调试代码修改。

在DevEco Studio中开启DevEco Hvigor的常驻进程构建能力,需要在DevEcoStudio中打开Settings - Build, Execution,Development - Build Tools - Hvigor选项,并勾选"Enablethe Daemon for tasks"。

wKgaomUroLOARh4yAAJm20YrJAM748.png

在命令行中,可以通过使用hvigorw命令行工具来查看常驻进程状态或关闭常驻进程。

  • 在工程目录下执行./hvigorw --status-daemon,可以查看所有常驻进程的状态。

  • 在工程目录下执行./hvigorw --stop-daemon,可以关闭当前工程对应的常驻进程。

  • 在工程目录下执行./hvigorw --stop-daemon-all,可以关闭当前运行的所有DevEco Hvigor常驻进程。

构建过程可视化

DevEco Hvigor会记录每次构建任务的日志信息,并通过可视化的图表界面进行展示。记录的信息包括任务执行的耗时与线程、ArkTS编译中的各环节的细分耗时情况等。开发者可以藉此分析构建过程中的耗时情况、进而改善构建效率。

在DevEco Studio中开启DevEco Hvigor的常驻进程构建能力,需要在DevEcoStudio中打开Settings - Build, Execution,Development - Build Tools - Hvigor选项,并勾选"Enablethe Daemon for tasks"。

wKgaomUroLOAMOMKAAJob4p0yIA793.png

后,可以点击DevEco Studio下方的"Build Analyzer"标签页,查看构建过程中的日志信息和耗时情况。

wKgaomUroLSAGOcPAAGMpv-VDh8943.png

差异化构建打包

常情况下,应用厂商会根据不同的部署环境、不同的目标人群以及不同的运行环境等,将同一个应用定制为不同的版本。DevEcoHvigor支持差异化构建打包,在构建配置文件中将差异化部分显示配置出来,即可在编译构建过程中实现一个应用构建出不同的目标产物版本,从而实现源代码、资源文件等的高效复用。

通过配置Target,每个HAP包都可以定制功能和资源。在每个HAP模块的build-profile.json5中,可以配置该模块支持的Targets:

{
  "apiType": 'stageMode',
  "buildOption": {  
  },
  "targets": [  //定义不同的target
    {
      "name": "default",  //默认target名称default
      "runtimeOS": "HarmonyOS",
    },
    {
      "name": "free",  //免费版target名称
      "runtimeOS": "HarmonyOS"
    },
    {
      "name": "pay",  //付费版target名称
      "runtimeOS": "HarmonyOS",
    }
  ]
}

(左右滑动查看更多)

在每个target中,可以定制其页面源码集、资源目录、支持的设备类型等,比如当你只希望某个hap对应平板设备、而某个hap包对应手机配置时,可以如下配置:
{
  "apiType": 'stageMode',
  "buildOption": {
  },
  "targets": [
    {
      "name": "default",
      "runtimeOS": "HarmonyOS",
    },
    {
      "name": "phone",
      "runtimeOS": "HarmonyOS",
      "config": {
        "deviceType": [  //定义free支持的设备类型为phone
          "phone"
        ]
      }
    },
    {
      "name": "tablet",
      "runtimeOS": "HarmonyOS",
      "config": {
        "deviceType": [  //定义pay支持的设备类型为phone
          "tablet"
        ]
      }
    }
  ]
}
(左右滑动查看更多通过配置将哪些HAP模块的Target与Product绑定,让定制化的HAP可以组合成APP包、发布上架应用市场。在工程级的build-profile.json5中,先定义Product,并可以定制使用不同的bundleName和签名材料:
"app": {
    "signingConfigs": [],
    "compileSdkVersion": 9,
    "compatibleSdkVersion": 9,
    "products": [
      {
        "name": "default",
        "bundleName": "com.example00.com",  //定义default的bundleName信息
        "signingConfig": "default" //定义default的签名文件信息
      },
      {
        "name": "productA",
        "bundleName": "com.example01.com",  //定义productA的bundleName信息
        "signingConfig": "productA" //定义productA的签名文件信息
      },
      {
        "name": "productB",
        "bundleName": "com.example02.com",  //定义productB的bundleName信息
        "signingConfig": "productB" //定义productB的签名文件信息
      }
    ]
}
(左右滑动查看更多再定义需要将哪些HAP模块的Target与Product绑定,就可以在上架应用商店时提供不同的APP包。
{
  "app": {
    "signingConfigs": [],
    "compileSdkVersion": 9,
    "compatibleSdkVersion": 9,
    "products": [
      {
        "name": "default",
        "bundleName": "com.example00.com",
        "signingConfig": "default"
      },
      {
        "name": "productA",
        "bundleName": "com.example01.com",
        "signingConfig": "productA"
      },
      {
        "name": "productB",
        "bundleName": "com.example02.com",
        "signingConfig": "productB"
      }
    ]
  },
  "modules": [
    {
      "name": "entry",
      "srcPath": "./entry",
      "targets": [
        {
          "name": "default",  //将default target分别打包到default、productA和productB APP中
          "applyToProducts": [
            "default",
            "productA",
            "productB"
          ]
        },
        {
          "name": "free",  //将free target打包到productA APP中
          "applyToProducts": [
            "productA"
          ]
        },
        {
          "name": "pay",  //将pay target打包到productB APP中
          "applyToProducts": [
            "productB"
          ]
        }
      ]
    }
  ]
}
(左右滑动查看更多最后,在DevEco Studio中,可以使用可视化界面来选择运行和调试指定模块和Target。从DevEco Studio界面的右上角打开面板,执行需要调试或运行的Target,DevEco Hvigor就会执行指定模块、指定Target的编译构建,并在预览和调试中都使用该配置。

wKgaomUroLSAKb6XAAJ5D1FyAoU784.png

未来特性与总结

目前,DevEcoHvigor作为全新开发的编译构建工具,虽然已经有了不少可以提升编译效率的地方,但仍有许多新的特性、功能和性能优化还在路上。比如,DevEcoHvigor即将开放的自定义构建任务插件能力和编译流程插桩接口、在运行时获取构建配置的BuildProfile机制等。我们会继续努力,力求将更好的编译效率、更便捷的构建体验,带给每一位HarmonyOS应用的开发者。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HarmonyOS
    +关注

    关注

    80

    文章

    2146

    浏览量

    35562

原文标题:【技术视界】DevEco Hvigor高效编译,构建过程新秘籍

文章出处:【微信号:HarmonyOS_Dev,微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    开源鸿蒙技术大会2025丨编译器与编程语言分论坛:语言驱动系统创新,编译赋能生态繁荣

    在万物智联的时代背景下,操作系统底层能力的构建离不开编程语言与编译器的关键支撑。作为开源鸿蒙生态的核心技术,语言设计与编译器、虚拟机实现的进步直接关系到开发效率、运行性能与系统安全。本
    的头像 发表于 11-20 17:24 474次阅读
    开源鸿蒙<b class='flag-5'>技术</b>大会2025丨<b class='flag-5'>编译</b>器与编程语言分论坛:语言驱动系统创新,<b class='flag-5'>编译</b>赋能生态繁荣

    HarmonyOSAI编程编译报错智能分析

    DevEco Studio构建ArkTS工程出现失败时,CodeGenie能够对错误进行智能分析,提供错误原因及修复方案,帮助开发者快速解决编译构建问题。 如需开启
    发表于 08-25 17:40

    HarmonyOSAI编程DevEco AI辅助编程工具

    DevEco AI辅助编程工具(CodeGenie)基于BitFun Platform AI能力平台,为开发者提供高效的应用与服务AI编程支持,支持智能知识问答、代码生成、页面生成、万能卡片生成
    发表于 08-18 14:54

    迅为RK3568开发板基本工程目录-工程级目录

    : 从上往下依次来了解下。 .hvigor 目录是编译构建脚本生成目录。 .idea 目录用于存储项目的配置信息,包括历史记录,版本控制信息等,是由开发工具自动生成的,一般情况下不需要进行修改
    发表于 07-10 10:45

    使用DevEcoStudio 开发、编译鸿蒙 NEXT_APP 以及使用中文插件

    ├── hvgor/ │└── hvigor-config.json5 ├── build/ # 编译后正式包 └── build-profile.json5# 项目构建配置文件 4 代码方式布局
    发表于 06-11 17:18

    最新 HUAWEI DevEco Studio 使用技巧

    最新 HUAWEI DevEco Studio 使用技巧 HUAWEI DevEco Studio 作为我们 harmonyos 应用的开发工具,有必要好好打磨一下。 Chinese
    的头像 发表于 04-27 16:59 1161次阅读
    最新 HUAWEI <b class='flag-5'>DevEco</b> Studio 使用技巧

    DevEco Studio 工具如何安装

    签名。 步骤 3在编辑窗口右上角的工具栏,点击运行按钮,或使用默认快捷键 Shift+F10(Mac 为 Control+R)运行工程,等待编译完成即可便运行在设备上。 至此,验证了 DevEco Studio 工具已正确安装,接下来可以开始正式的应用开发。
    发表于 04-24 07:38

    DevEco Studio增量补丁修复功能,让鸿蒙应用的调试效率大增

    后,仅对代码的修改部分进行增量产物构建并打成补丁包,而不是漫长的全量编译,这一过程能够节省开发者大量的时间。而补丁修复则是替换并更新运行时中对应方法或文件并重载到应用中,最后重新构建
    发表于 04-14 17:35

    DevEco Studio增量补丁修复功能,让鸿蒙应用的调试效率大增

    后,仅对代码的修改部分进行增量产物构建并打成补丁包,而不是漫长的全量编译,这一过程能够节省开发者大量的时间。而补丁修复则是替换并更新运行时中对应方法或文件并重载到应用中,最后重新构建
    发表于 04-14 14:47

    KiCad直播活动(三):在 Windows上编译KiCad 手把手教您编译/构建 KiCad 源码

    Developer Ethan 同学,手把手教您编译/构建 KiCad 源码: 开发工具安装 环境变量配置 使用 VS2022 构建 KiCad 参与直播的小伙伴还有机会获得 KiCon Badge
    的头像 发表于 03-24 11:14 1387次阅读
    KiCad直播活动(三):在 Windows上<b class='flag-5'>编译</b>KiCad 手把手教您<b class='flag-5'>编译</b>/<b class='flag-5'>构建</b> KiCad 源码

    DevEco Studio 联合小艺接入 DeepSeek,步骤更简单开发鸿蒙更专业

    ,提供智能知识问答、代码生成、元服务卡片生成的能力,新增支持对接小艺 DeepSeek,可以帮助开发者高效开发鸿蒙应用及元服务。 在 DevEco Studio 下载页向下翻,就可以看
    发表于 03-13 15:11

    HarmonyOS NEXT 原生应用/元服务-DevEco Profiler性能优化过程

    DevEco Profiler也遵循以上流程,在使用DevEco Profiler进行性能优化时,您可以参考以下过程: 1.使用“Realtime Monitor”监控设备的各项资源使用情况,识别定界
    发表于 02-19 15:28

    如何在DevEco Studio中利用CodeGPT接入DeepSeek

    近期DeepSeek火爆全球,那一样很火的开发鸿蒙原生应用的DevEco Studio如果把它接入,会发生什么“化学反应”呢?下面我们将详细分享如何在DevEco Studio中利用CodeGPT
    的头像 发表于 02-19 13:52 1774次阅读
    如何在<b class='flag-5'>DevEco</b> Studio中利用CodeGPT接入DeepSeek

    DevEco Studio构建分析工具Build Analyzer 为原生鸿蒙应用开发提速

    在原生鸿蒙应用开发过程中,随着项目复杂度的增加,开发者花费在构建上的时间越来越长,导致开发效率降低。为了帮助开发者解决构建效率的问题,华为在DevEco Studio上提供了Build
    发表于 02-17 18:06

    Triton编译器与其他编译器的比较

    Triton编译器与其他编译器的比较主要体现在以下几个方面: 一、定位与目标 Triton编译器 : 定位:专注于深度学习中最核心、最耗时的张量运算的优化。 目标:提供一个高度抽象、灵活、高效
    的头像 发表于 12-24 17:25 1575次阅读