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

    文章

    2157

    浏览量

    36480

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    探索MAX856 - MAX859:高效升压DC - DC转换器的设计秘籍

    探索MAX856 - MAX859:高效升压DC - DC转换器的设计秘籍 在设计电子设备时,直流 - 直流(DC - DC)转换器的选择至关重要,尤其是在处理小功率、低输入电压或电池供电的系统
    的头像 发表于 03-19 09:45 652次阅读

    LTC3541:高效降压与VLDO调节器的设计秘籍

    LTC3541:高效降压与VLDO调节器的设计秘籍 在电子设备的电源管理领域,一款性能卓越的调节器能为设备的稳定运行提供坚实保障。今天,我们就来深入探讨Linear Technology公司
    的头像 发表于 03-13 11:35 271次阅读

    探索MAX17630:高效同步降压DC-DC转换器的设计秘籍

    探索MAX17630:高效同步降压DC-DC转换器的设计秘籍 在电源管理领域,一款高效、稳定的DC-DC转换器是众多电子工程师梦寐以求的“神器”。今天,我们就来深入剖析一下Maxim
    的头像 发表于 03-05 10:30 551次阅读

    简单高效的鸿蒙编译提速技巧

    在鸿蒙应用开发中编译构建是开发者最频繁的操作,每一次编译提速都能显著提升项目整体开发效率。本次分享几个简单却高效的鸿蒙编译提速技巧,从
    的头像 发表于 03-04 16:09 342次阅读
    简单<b class='flag-5'>高效</b>的鸿蒙<b class='flag-5'>编译</b>提速技巧

    探索LMG341xR050:高效GaN功率级的技术剖析与设计秘籍

    探索LMG341xR050:高效GaN功率级的技术剖析与设计秘籍 在电力电子领域,效率和功率密度一直是工程师们追求的关键指标。TI推出的LMG341xR050系列600 - V 50 - mΩ集成
    的头像 发表于 03-01 17:15 1208次阅读

    解析Microchip MCP3004/3008:高效10位A/D转换器的技术秘籍

    解析Microchip MCP3004/3008:高效10位A/D转换器的技术秘籍 在电子设计领域,模数转换器(A/D)是连接模拟世界与数字世界的关键桥梁。Microchip公司的MCP3004
    的头像 发表于 02-09 16:25 881次阅读

    揭秘!三步让Debian系统编译速度起飞,告别重复下载资源的烦恼

    在 Debian 系统编译过程中,重复构建系统和动态下载相关资源往往会消耗大量时间,拖慢开发和部署进度。今天,我们就通过分析一组代码修改,来探索如何优化 Debian 系统编译,实现
    的头像 发表于 02-01 16:43 1682次阅读

    VIPER16:高效离线转换器的设计秘籍

    VIPER16:高效离线转换器的设计秘籍 在电源设计领域,一款性能出色且功能丰富的离线转换器往往是工程师们的得力助手。今天,我们就来深入探讨一下ST公司的VIPER16,这是一款属于Fixed
    的头像 发表于 01-27 16:50 675次阅读

    【瑞萨RA × Zephyr评测】Zephyr RTOS保姆级环境构建编译下载踩坑版

    笔者介绍一下Zephyr RTOS 保姆级环境构建编译下载
    的头像 发表于 01-10 10:03 1w次阅读
    【瑞萨RA × Zephyr评测】Zephyr RTOS保姆级环境<b class='flag-5'>构建</b>与<b class='flag-5'>编译</b>下载踩坑版

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

    在万物智联的时代背景下,操作系统底层能力的构建离不开编程语言与编译器的关键支撑。作为开源鸿蒙生态的核心技术,语言设计与编译器、虚拟机实现的进步直接关系到开发效率、运行性能与系统安全。本
    的头像 发表于 11-20 17:24 1293次阅读
    开源鸿蒙<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

    DevEco CodeGenie 鸿蒙AI 辅助编程初次使用

    一、工具概述与核心能力 DevEco CodeGenie 是集成在 DevEco Studio 中的 AI 辅助编程插件,专为 HarmonyOS 应用开发设计,提供三大核心能力: 智能知识问答
    的头像 发表于 06-26 08:48 1223次阅读

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

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