[开发|鸿蒙] DevEco Studio编译构建(笔记,持续更新)

构建体系

编译构建是将应用/服务的源代码、资源、第三方库等,通过编译工具转换为可直接在硬件设备上运行的二进制机器码,然后再将二进制机器码封装为HAP/APP软件包,并为HAP/APP包进行签名的过程。其中,HAP是可以直接运行在模拟器或真机设备中的软件包;APP则是用于应用/服务上架到华为应用市场。HAP和APP的关系说明请参考工程介绍

应用/服务发布形态为APP Pack (Application Package,简称APP),它是由一个或多个HAP(Harmony Ability Package)包以及描述APP Pack属性的pack.info文件组成。

HarmonyOS应用/服务API Version 4 ~ 7和API Version 8 ~ 9的构建工具和构建插件不同。

  • API Version 4 ~ 7构建体系是由Gradle构建工具和构建插件组成;
  • API Version 8 ~ 9构建体系是由Hvigor构建工具和构建插件组成。

Gradle构建工具作为业界流行的自动化构建开源工具,本章节不再赘述,接下来为大家介绍Hvigor构建体系。

Hvigor构建工具:一款全新基于TS实现的前端构建任务编排工具,结合npm包管理机制,主要提供任务管理机制,任务注册编排、工程模型管理、配置管理等关键能力,更符合ArkTS/JS开发者的开发习惯。

构建插件hvigor-ohos-plugin:是基于Hvigor构建工具开发的一个插件,利用Hvigor的任务编排机制实现应用/服务构建任务流的执行,完成HAP/APP的构建打包,应用于应用/服务的构建。

DevEco Studio会自动配置配套版本的编译工具和构建插件依赖,关于构建工具和构建插件的版本配套关系可参考DevEco Studio版本说明

工程目录及配置文件说明

工程目录及配置文件(API Version 9)

HarmonyOS API Version 9基于Hvigor构建体系,DevEco Studio定义了其工程范式,下面是Hvigor构建体系的工程目录结构示意图:

如何构建应用/服务

启动应用/服务构建

通过DevEco Studio构建应用/服务的方式有以下两种:

  • 方式一:通过单击或- 按钮,DevEco Studio会启动应用/服务的编译,并将编译后的HAP部署到设备中。这种方式一般用于应用开发阶段进行应用的调试、功能验证等场景。

  • 方式二:通过DevEco Studio的Build菜单栏的编译选项进行构建,HAP的构建结果存放于各模块的"build"文件夹下,APP包的构建结果存放于工程的"build"文件夹下。这种方式可以分别编译HAP和APP包,其中HAP可用于安装到设备中进行功能验证,APP包则用于将应用/服务发布到应用市场。

    关于Build菜单下的编译选项说明如下:

    菜单项 说明
    Build Hap(s)/APP(s) > Build Hap(s) 对整个工程进行构建,若工程中有多个Module,则编译后会生成多个HAP。构建的HAP为debug类型,携带调试信息文件,包括*.js,*.js.map等文件。
    Build Hap(s)/APP(s) > Build APP(s) 对整个工程进行构建,将工程构建生成一个APP包,如果存在多个模块,APP包会包含多个HAP,HAP为Release类型,不包含调试信息文件。
    Make Module 对工程中当前选择的模块进行构建,只会编译指定的模块名生成HAP、HAR和JAR包。
    Rebuild Project 对工程中各个模块进行Clean操作后,重新进行构建,生成对应的HAP。
    Clean Project 清除构建过程中的缓存文件,以及构建生成的HAP/APP/HAR/JAR包。
    Generate Key and CSR 用于生成申请调试/发布证书所需要的密钥和证书请求文件。

查看编译结果

编译构建成功后,您可以在工程目录中找到对应的编译产物(如APP/HAP)。

  • API Version 8~9编译构建结果:

多工程构建

为降低大型应用多个团队协作开发的复杂度,提供多工程开发模式,提高协作开发效率。多工程开发能力支持将大型应用拆分为多个模块,每个模块对应一个单独工程。在每个工程分别编译生成HAP后,需统一打包生成一个APP,用于上架应用市场。

  1. 分别在每个工程的build-profile.json5配置文件中,设置multiProjects字段值为true。
json 复制代码
   {  
   	"app": {
   		...
   		"multiProjects": true,  
   	}
   }
  1. 准备好HAP打包工具app_packing_tool.jar(在${HOS_SDK_HOME}/openharmony/版本号/toolchains/lib下)。

  2. 使用如下命令,将多个HAP进行打包。

    • hap-list:多个HAP文件名称,如"1.hap"和"2.hap",用逗号隔开;
    • out-path:生成的APP名称,如"final.app"
java 复制代码
   java -jar app_packing_tool.jar --mode multiApp --hap-list 1.hap,2.hap --out-path final.app
相关推荐
爸爸6196 小时前
06 项目目录结构与编码规范:三层架构与 DAO 模式实践
华为·架构·harmonyos·鸿蒙系统
不才难以繁此生7 小时前
HarmonyOS 端侧应用实战:中式美食如何把资源、路由、存储和视频拆菜串成一条工程链路
harmonyos·arkts·arkui·中式美食·端侧应用
爸爸6197 小时前
07 ArkTS 基础类型与接口定义:从 TypeScript 到鸿蒙的类型升级
javascript·华为·typescript·harmonyos·鸿蒙系统
绝世番茄7 小时前
鸿蒙 HarmonyOS ArkTS 音乐播放器界面布局深度学习指南
深度学习·华为·list·harmonyos·鸿蒙
不才难以繁此生8 小时前
HarmonyOS 实战|中式美食视频拆菜编辑面板:因子状态、草稿卡片与底部操作条
harmonyos·arkts·中式美食·arkui v2·视频拆菜
在书中成长9 小时前
HarmonyOS 小游戏《对战五子棋》开发第18篇 - 棋盘设计
算法·harmonyos
m0_749690239 小时前
HarmonyOS 本地备份与系统备份:BackupExtensionAbility、快照导出和恢复
harmonyos
心中有国也有家9 小时前
AtomGit Flutter 鸿蒙客户端:情绪日记的时间线实现
学习·flutter·华为·harmonyos
澹然疏离9 小时前
HarmonyOS应用《民族图鉴》开发第33篇:StorageService——本地存储服务封装
harmonyos
Nturmoils10 小时前
Agent 不只是聊天框:用 ArkUI 做一个鸿蒙任务工作台
harmonyos