鸿蒙 App 的项目结构一般为:HAP(主 App) 依赖 HSP(动态库) 或 HAR(静态库)。
模块 | 描述 | 场景 |
---|---|---|
HAP | HAP(Harmony Ability Package)是应用安装和运行的基本单元。HAP 包是由代码、资源、第三方库、配置文件等打包生成的模块包,其主要分为两种类型:entry 和 feature。 | 单 HAP 场景 :如果只包含 UIAbility 组件,无需使用 ExtensionAbility 组件,优先采用单 HAP(即一个 entry 包)来实现应用开发。虽然一个 HAP 中可以包含一个或多个 UIAbility 组件,为了避免不必要的资源加载,推荐采用“一个 UIAbility+多个页面”的方式。 多 HAP 场景 :如果应用的功能比较复杂,需要使用 ExtensionAbility 组件,可以采用多 HAP(即一个 entry 包+多个 feature 包)来实现应用开发,每个 HAP 中包含一个 UIAbility 组件或者一个 ExtensionAbility 组件。在这种场景下,可能会存在多个 HAP 引用相同的库文件,导致重复打包的问题。 |
HAR | HSP(Harmony Shared Package)是动态共享包,可以包含代码、C++库、资源和配置文件,通过 HSP 可以实现应用内的代码和资源的共享。HSP 不支持独立发布,而是跟随其宿主应用的 APP 包一起发布,与宿主应用同进程,具有相同的包名和生命周期。 仅支持应用内 HSP,不支持应用间 HSP。 | 多个 HAP/HSP 共用的代码和资源放在同一个 HSP 中,可以提高代码、资源的可重用性和可维护性,同时编译打包时也只保留一份 HSP 代码和资源,能够有效控制应用包大小。 HSP 在运行时按需加载,有助于提升应用性能。 |
HSP | HAR(Harmony Archive)是静态共享包,可以包含代码、C++库、资源和配置文件。通过 HAR 可以实现多个模块或多个工程共享 ArkUI 组件、资源等相关代码。 | 作为二方库,发布到 OHPM 私仓,供公司内部其他应用使用。作为三方库,发布到 OHPM 中心仓,供其他应用使用。 |
一般我们的业务模块为创建为 HSP 动态库模式,也是官网建议的模式,主要是可以缩减包体积大小。