HarmonyOS - 共享包

三味码屋 2024年04月21日 369次浏览

共享包

共享包作用

为了实现代码和资源的共享

共享包类型

  1. HAR(Harmony Archive)静态共享包
  2. HSP(Harmony Shared Package)动态共享包

HAR 和 HSP 相同点

  • 都是为了实现代码和资源的共享
  • 都可以包含代码、C++库、资源和配置文件

HAR 和 HSP 不同点

HAR 中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝;而HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。

HAR 和 HSP 在 APP 包中的形态示意图

HAR和HSP在APP包中的形态示意图

HAR 约束

  • HAR 不支持在配置文件中声明 abilities、extensionAbilities 组件。
  • HAR 不支持在配置文件中声明 pages 页面。
  • HAR 不支持在 build-profile.json5 文件的 buildOption 中配置 worker。
  • FA 模型与 Stage 模型的 HAR 不支持相互引用。
  • Stage 模型的 HAR,不能引用 AppScope 内的内容。在编译构建时 AppScope 中的内容不会打包到 HAR 中,导致 HAR 资源引用失败。

HSP 旨在解决 HAR 存在的问题

  • 多个HAP引用相同的HAR,导致的APP包大小膨胀问题。
  • 多个HAP引用相同的HAR,HAR中的一些状态变量无法共享的问题。

HSP 约束

  • HSP 及其使用方都必须是 Stage 模型。
  • HSP 及其使用方都必须使用 esmodule 编译模式。
  • HSP 不支持在配置文件中声明 abilities、extensionAbilities 标签。