关于 HAP、HAR、 HSP、App

关于 HAP、HAR、 HSP、App

HAP

HAP(Harmony Ability Package)是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包,其主要分为两种类型:entry和feature。

  • entry:应用的主模块,作为应用的入口,提供了应用的基础功能。
  • feature:应用的动态特性模块,作为应用能力的扩展,可以根据用户的需求和设备类型进行选择性安装。

应用程序包可以只包含一个基础的entry包,也可以包含一个基础的entry包和多个功能性的feature包。

使用场景

  • 单HAP场景:如果只包含UIAbility组件,无需使用ExtensionAbility组件,优先采用单HAP(即一个entry包)来实现应用开发。虽然一个HAP中可以包含一个或多个UIAbility组件,为了避免不必要的资源加载,推荐采用“一个UIAbility+多个页面”的方式。
  • 多HAP场景:如果应用的功能比较复杂,需要使用ExtensionAbility组件,可以采用多HAP(即一个entry包+多个feature包)来实现应用开发,每个HAP中包含一个UIAbility组件或者一个ExtensionAbility组件。在这种场景下,可能会存在多个HAP引用相同的库文件,导致重复打包的问题。

HAR

HAR(Harmony Archive)是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。

使用场景

  • 作为二方库,发布到OHPM私仓,供公司内部其他应用使用。
  • 作为三方库,发布到OHPM中心仓,供其他应用使用。

HSP

HSP(Harmony Shared Package)是动态共享包,可以包含代码、C++库、资源和配置文件,通过HSP可以实现代码和资源的共享。HSP不支持独立发布,而是跟随其宿主应用的APP包一起发布,与宿主应用同进程,具有相同的包名和生命周期。

说明:

应用内HSP:在编译过程中与应用包名(bundleName)强耦合,只能给某个特定的应用使用。

集成态HSP:构建、发布过程中,不与特定的应用包名耦合;使用时,工具链支持自动将集成态HSP的包名替换成宿主应用包名。

使用场景

  • 多个HAP/HSP共用的代码和资源放在同一个HSP中,可以提高代码、资源的可重用性和可维护性,同时编译打包时也只保留一份HSP代码和资源,能够有效控制应用包大小。
  • HSP在运行时按需加载,有助于提升应用性能。
  • 同一个组织内部的多个应用之间,可以使用集成态HSP实现代码和资源的共享。
  • 元服务分包预加载、按需加载。

怎么理解App、HAP、HAR的关系

  • App是个上架概念,多个HAP打包一起上架。
  • HAP是可以独立运行、分发的,HAP不是复用的,复用的应该是HAR。
  • HAR是静态共享包,每个模块依赖的话都会打包到HAP里。

har如何转换为hsp

HAR转为HSP主要是通过相关配置文件的修改实现的。具体方式可参考以下步骤:

  1. 在HAR的module.json5中,将type字段的值改为“shared”,并添加deliveryWithInstall字段配置为“true”。
  2. 若HSP需要对外声明可跳转的页面,需要在module.json5文件中添加pages字段,并在“resources/base”目录下建立“profile/main_pages.json”文件,添加“src”配置。
  3. 将HAR的hvigorfile.ts文件中的“harTasks”更改为“hspTasks”。
  4. HAR的build-profile.json5文件中默认生成consumerFiles字段,该项仅HAR可配置,为默认导出的混淆规则,需删除。

配置更改完成后即可重新编译。

### 鸿蒙操作系统中的HARHSPHAP文件格式或组件类型的区别 #### HAP (Harmony Ability Package) HAP 是应用安装和运行的基本单元,由代码、资源、第三方库以及配置文件等组成。这种包主要用于构建独立的应用程序模块,并且分为两种类型:entry 和 feature。对于仅包含 `UIAbility` 组件而不需要使用 `ExtensionAbility` 组件的情况,建议通过单一的 entry 类型 HAP 来完成应用程序的开发工作[^3]。 ```json { "type": "entry", "name": "MainApp" } ``` #### HAR (Harmony Archive) 作为静态共享库的形式存在,HAR 主要用于提供给其他 HAP 使用的功能集合或是公共资源。它不会被直接部署到设备上执行,而是被打包进依赖它的 HAP 中一同发布。因此,在实际操作过程中,开发者通常会先创建好所需的 HAR 文件再将其加入至目标项目的编译流程里去[^2]。 ```bash # 编译命令示例 hbuildc --target=har -o output_directory source_files... ``` #### HSP (Harmony Shared Package) 不同于上述两者的是,HSP 属于一种动态共享库形式的存在。它可以允许同一组织内的不同应用程序间实现代码级与资源配置上的共用;然而需要注意的是,这类包并不支持单独安装备份或者启动运作——它们总是伴随着某个具体的 HAP 而存在并发挥作用。另外值得注意的一点在于,为了确保兼容性和稳定性,HSP 的版本应当同所依附的那个 HAP 版本保持同步更新状态。除此之外,由于技术架构方面的原因,现阶段只有 Stage 模式的 API 可供选用,并且最低要求为 API Level 12以上[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆雄雄

哎,貌似还没开张来着呢~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值