共享包作用
为了实现代码和资源的共享
共享包类型
HAR 和 HSP 相同点
- 都是为了实现代码和资源的共享
- 都可以包含代码、C++库、资源和配置文件
HAR 和 HSP 不同点
HAR 中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝;而HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。
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 标签。