HarmonyOS开发实战:编译体系构建指导规范

164 篇文章 1 订阅
154 篇文章 1 订阅

前言:

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

HarmonyOS应用/服务支持API Version 4~9,但API Version 4~7与API Version 8~9在编译构建体系、工程目录及配置文件等存在差异,接下来将详细介绍两者之间的差异。

构建体系

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 9及以上版本和API 8版本工程的修改位置不同:

  • API 9及以上版本需修改hvigor目录下的hvigor-config.json5文件,示例如下。
{
  “hvigorVersion”: "2.2.1",
  "dependencies": {
        "@ohos/hvigor-ohos-plugin": "2.2.1"
  }
}
  • API 8版本需要在工程级的package.json文件中配置相应的版本依赖,示例如下。
{
  ...
  "dependencies": {
    "@ohos/hvigor": "1.4.0",
    "@ohos/hvigor-ohos-plugin": "1.4.0"
  }
}

工程目录及配置文件说明

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

HarmonyOS API Version 9基于Hvigor构建体系,DevEco Studio定义了其工程范式,下面是Hvigor构建体系的工程目录结构示意图:
在这里插入图片描述
关于Hvigor构建体系中的构建配置文件(build-profile.json5)、构建脚本(hvigorfile.ts)、依赖配置(oh-package.json5)的详细说明请参考配置编译构建信息章节。

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

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

在这里插入图片描述
关于Hvigor构建体系中的构建配置文件(build-profile.json5)、构建脚本(hvigorfile.ts)、依赖配置(package.json)的详细说明请参考配置编译构建信息章节。

工程目录及配置文件(API Version 4~7)

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

在这里插入图片描述
关于build.gradle详细说明请参考配置编译构建信息章节。

如何构建应用/服务

启动应用/服务构建

说明
在完成应用/服务开发后,如果开发者需要将应用包上传到AGC平台的软件包管理或第三方管理平台草稿箱中,可选择通过Upload Project完成编译并上传,具体请参见通过DevEco Studio编译和上传软件包。

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

  • 方式一:通过单击或按钮,DevEco
    Studio会启动应用/服务的编译,并将编译后的HAP部署到设备中。这种方式一般用于应用开发阶段进行应用的调试、功能验证等场景。
  • 方式二:通过DevEco
    Studio的Build菜单栏的编译选项进行构建,HAP的构建结果存放于各模块的“build”文件夹下,APP包的构建结果存放于工程的“build”文件夹下。这种方式可以分别编译HAP和APP包,其中HAP可用于安装到设备中进行功能验证,APP包则用于将应用/服务发布到应用市场。

在这里插入图片描述
关于Build菜单下的编译选项说明如下:

在这里插入图片描述

查看编译过程

启动编译后,您可以在底部工具栏窗口查看编译任务的详细信息,例如执行的编译流程、任务的执行时间等信息。如果在编译构建过程中出现错误,您可以根据编译任务的详细错误说明进行问题的定位。

API Version 8~9工程编译构建示意图如下:
在这里插入图片描述
API Version 4~7工程编译构建示意图如下:
在这里插入图片描述
另外,针对Native C++开发方式,DevEco Studio支持的编译工具链为CMake和NinJa,在启动编译后,可以在底部工具栏窗口的输出内容中查看到编译工具链的具体配置信息。

CMake的配置信息如下所示。
在这里插入图片描述
NinJa的配置信息如下所示。
在这里插入图片描述

查看编译结果

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

  • API Version 8~9编译构建结果:
    在这里插入图片描述
  • API Version 4~7编译构建结果:
    在这里插入图片描述

多工程构建

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

1.分别在每个工程的build-profile.json5配置文件中,设置multiProjects字段值为true。

{
  "app": {
    ...
    "multiProjects": true,
  }
}

2.准备好HAP打包工具hap_packing_tool.jar(在${HOS_SDK_HOME}/openharmony/版本号/toolchains/lib下)。

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

  • hap-list:多个HAP文件名称,如“1.hap”和“2.hap”,用逗号隔开;
  • out-path:生成的APP名称,如“final.app”
java -jar app_packing_tool.jar --mode multiApp --hap-list 1.hap,2.hap --out-path final.app


最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?但是又不知道从哪里下手,而且学习时频繁踩坑,最终浪费大量时间。所以本人整理了一些比较合适的鸿蒙(HarmonyOS NEXT)学习路径和一些资料的整理供小伙伴学习

点击领取→纯血鸿蒙Next全套最新学习资料希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取~~

一、鸿蒙(HarmonyOS NEXT)最新学习路线

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)…等技术知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

二、HarmonyOS Next 最新全套视频教程

三、《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

四、大厂面试必问面试题

五、鸿蒙南向开发技术

六、鸿蒙APP开发必备


完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结
总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值