编译OpenHarmony 4.0 bete2及master分支,添加参数--no-prebuilt-sdk跳过编译sdk
简介
用户应用程序泛指运行在设备的操作系统之上,为用户提供特定服务的程序,简称“应用”。一个应用所对应的软件包文件,称为“应用程序包”。
OpenHarmony 提供了应用程序包开发、安装、查询、更新、卸载的管理机制,方便开发者开发和管理 OpenHarmony 应用,具体如下:
- 应用软件所涉及的文件多种多样,开发者可通过 OpenHarmony 提供的集成开发工具将其开发的可执行代码、资源、三方库等文件整合到一起制作成 OpenHarmony 应用程序包,便于开发者对应用程序的部署。
- 应用软件所涉及的设备类型多种多样,开发者可通过 OpenHarmony 提供的应用程序包配置文件指定其应用程序包的分发设备类型,便于应用市场对应用程序包的分发管理。
- 应用软件所包含的功能多种多样,将不同的功能特性按模块来划分和管理是一种良好的设计方式。OpenHarmony 提供了同一应用程序的多包管理的机制,开发者可以将不同的功能特性聚合到不同的包中,方便后续的维护与扩展。
- 应用软件涉及的芯片平台多种多样,有 x86、ARM 等,还有 32 位、64 位之分,OpenHarmony 为应用程序包屏蔽了芯片平台的差异,使应用程序包在不同的芯片平台都能够安装运行。
- 应用软件涉及的软件信息多种多样,有应用版本、应用名称、组件、申请权限等的信息,OpenHarmony 包管理为开发者提供了这些信息的查询接口,方便开发者在程序中查询所需要的包信息。
- 应用软件涉及的资源多种多样,有媒体资源、原生资源、字符资源以及国际化的资源等,OpenHarmony 包管理将不同的资源归档到不同的目录中,并集成资源索引文件,方便应用对资源的查找和使用。
hap 包的概念
HAP(Harmony Ability Package)是 OpenHarmony 应用安装的基本单位,包含了编译后的代码、资源、三方库及配置文件。HAP 可分为 Entry 和 Feature 两种类型:
- Entry 类型的 HAP:是应用的主模块,在 module.json5 配置文件中的 type 标签配置为“entry”类型。在同一个应用中,同一设备类型只支持一个 Entry 类型的 HAP,通常用于实现应用的入口界面、入口图标、主特性功能等。
- Feature 类型的 HAP:是应用的动态特性模块,在 module.json5 配置文件中的 type 标签配置为“feature”类型。一个应用程序包可以包含一个或多个 Feature 类型的 HAP,也可以不包含;Feature 类型的 HAP 通常用于实现应用的特性功能,可以配置成按需下载安装,也可以配置成随 Entry 类型的 HAP 一起下载安装(请参见 module 对象内部结构中的“deliveryWithInstall”)。
每个 OpenHarmony 应用可以包含多个.hap 文件,一个应用中的.hap 文件合在一起称为一个 Bundle,而 bundleName 就是应用的唯一标识(请参见 app.json5 配置文件中的 bundleName 标签)。需要特别说明的是:在应用上架到应用市场时,需要把应用包含的所有.hap 文件(即 Bundle)打包为一个.app 后缀的文件用于上架,这个.app 文件称为 App Pack(Application Package),其中同时包含了描述 App Pack 属性的 pack.info 文件;在云端分发和端侧安装时,都是以 HAP 为单位进行分发和安装的。
hap 包开发调试与发布部署
开发
开发者通过 DevEco Studio 工具按照业务的需要创建多个 Module,在相应的 Module 中完成自身业务的开发。
调试
通过 DevEco Studio 编译打包,生成单个或者多个 HAP。真机基于 HAP 进行安装、卸载调试,调试指南可参考应用程序包调试方法,其中包括了单 HAP 与多 HAP 通过 DevEco Studio 工具的安装调试方法。
应用程序包也可以通过 hdc_std 工具(可通过 OpenHarmony SDK 获取,在 SDK 的 toolchains 目录下)进行安装、更新与卸载,通过 hdc_std 安装 HAP 时,HAP 的路径为开发平台上的文件路径,以 Windows 开发平台为例,命令参考如下:
hdc_std install C:\entry.hap C:\feature.hap ## 安装、更新,多HAP可以指定多个文件路径
install bundle successfully. ## 执行结果
hdc_std uninstall com.example.myapplication ## 卸载
uninstall bundle successfully. ## 执行结果
应用程序包也可以通过 bm 工具进行调试。通过 bm 工具进行安装、更新 HAP 时,传入的文件路径为真机上的文件路径,命令参考如下:
bm install -p /data/app/entry.hap /data/app/feature.hap ## 安装、更新,多HAP可以指定多个文件路径
install bundle successfully. ## 执行结果
bm uninstall -n com.example.myapplication ## 卸载
uninstall bundle successfully. ## 执行结果
发布
当开发的程序包满足发布要求时,可以在工具中打包编译生成 App 包。将该 App 包上架到应用市场云端,应用市场会对上架的 App 包校验签名,校验签名通过后会将 App 包中的 HAP 拆分出来,同时对拆分出的 HAP 重新添加签名,然后对 HAP 进行分发。
部署
用户在设备上的应用市场客户端能够看到各种各样的应用,这些应用均由云端分发而来,有些是多 HAP 应用,有些是单 HAP 应用。用户选择某个应用后,应用市场将下载应用包含的全部 HAP。
应用在终端设备上的安装
下载完成后,应用市场客户端再调用系统中包管理服务的安装接口安装下载的 HAP,包管理服务以应用为单位将其中所有 HAP 部署到指定目录下,以完成应用的安装。