目录

应用程序包概述

在开发应用之前,开发者需要了解应用的设计机制、应用程序包结构等基础知识。

应用与应用程序包

用户应用程序是指运行在设备操作系统之上,为用户提供特定服务的程序,简称“应用”。一个应用所对应的软件包文件,称为“应用程序包”。

系统提供了应用程序包开发、安装、查询、更新、卸载的管理机制,便于开发者开发和管理应用。此外,系统还屏蔽了不同的芯片平台的差异(包括x86/ARM,32位/64位等),保证应用程序包在不同的芯片平台都能够安装运行,使得开发者可以聚焦于应用的功能实现。

应用的多Module设计机制

Module类型

Module按照使用场景可以分为两种类型:

选择合适的包类型

HAP、HAR、HSP三者的功能和使用场景总结对比如下:

Module类型 包类型 说明
Ability HAP 应用的功能模块,可以独立安装和运行。
Static Library HAR

静态共享包,编译态复用。

- 支持应用内共享,也可以作为二方库(SDK)、三方库(SDK)发布后供其他应用使用。

- 作为二方库(SDK),发布到OHPM私仓,供公司内部其他应用使用。

- 作为三方库(SDK),发布到OHPM中心仓,供其他应用使用。

- 多包(HAP/HSP)同时引用相同的HAR时,会造成多包间代码和资源的重复拷贝,从而导致应用包增大。

- 注意:构建HAR时,建议开启混淆能力,保护代码资产。

Shared Library HSP

动态共享包,运行时复用。

- 当多包(HAP/HSP)同时依赖同一个共享包时,使用HSP替代HAR,可以避免HAR造成的多包间代码和资源的重复拷贝,从而减小应用包大小。

HAP、HSP、HAR支持的规格对比如下,其中“√”表示是,“×”表示否。

开发者可以根据具体的应用需求,选择相应类型的包进行开发。在后续的章节中还会针对如何使用HAP、HAR、HSP分别展开详细介绍。

规格 HAP HAR HSP
支持在配置文件中声明UIAbility组件 √ √ √
支持在配置文件中声明ExtensionAbility组件 √ √ √
支持在配置文件中声明pages页面 √ × √
支持包含资源文件与.so文件 √ √ √
支持依赖其他HAR文件 √ √ √
支持依赖其他HSP文件 √ √ √
支持在设备上独立安装运行 √ × √
  • 如果HAR支持声明pages页面,那么当HAR被打包到HAP或HSP中时,其内部声明的pages页面可能会与HAP/HSP中的pages页面存在相对路径上的重复,这将导致无法根据相对路径识别特定的路由页面。因此,HAR不支持在配置文件中声明pages页面,但可以包含pages页面,并通过Navigation跳转的方式进行跳转。
  • 由于HSP仅支持应用内共享,如果HAR依赖了HSP,则该HAR文件仅支持应用内共享,不支持发布到二方库或三方库供其他应用使用,否则会导致编译失败。
  • HAR和HSP均不支持循环依赖,也不支持依赖传递,详情说明可以参考HAR或者HSP中约束限制说明。