鸿蒙模块化

一、模块化设计理念

在大型软件工程中,模块化是将复杂系统拆解为功能模块,以提高可维护性和可拓展性。在 HarmonyOS 应用开发中,模块化将应用程序拆分为多个功能模块,功能模块可独立开发、编译和部署,也可在不同设备上灵活组合和调用。

二、应用程序包结构概念

在进行模块化设计时,需要考虑HarmonyOS的应用包结构选型,HarmonyOS的应用包结构是为了定义应用的组织方式,通过开发态、编译态、发布态阶段应用程序包的形态,了解到不同包类型对应的使用场景以及使用规则。

三、Ability 应用组件设计

  1. 根据业务设备及诉求选择和设计 Ability 组件。在多设备背景下,应用形态多样,如手机设备上的多任务应用和大屏设备上的多窗口应用。

  2. 单 Ability 情况下,可采用单 HAP(HarmonyOS Ability Package,是 HarmonyOS 应用的安装包,用于承载应用的 Ability 组件,可以理解为一个独立的功能单元或者应用模块,它包含了运行应用所需的代码、资源和配置信息等)承载 UIAbility;多 Ability 分两种情况,多窗口类型应用可将模块作为 Feature 类型的 HAP 承载 UIAbility 组件,拓展功能可通过 Feature 类型的 HAP 承载单独的 ExtensionAbility 组件。

四、应用模块化选型

  1. 共享模块:可将公共能力封装成 HAR(HarmonyOS ArkTS Library,是一种静态共享库,主要用于代码和资源的共享。它可以被多个应用或者模块引用,将公共的代码逻辑和资源整合在一起,方便开发团队在不同的项目中复用代码,减少重复开发的工作量)模块,发布到 OHPM 仓供多个应用使用或贡献给社区。

  2. 按需加载模块:对于用户月活低的特性可做成按需加载模块,减少包体积和系统资源,有利于架构演进。可设计为 Feature 类型的 HAP 或 HSP(HarmonyOS Shared Package,是一种动态共享库,用于实现按需加载功能模块。它在应用运行时可以根据用户的需求动态地加载相应的功能,使得应用在初始安装时体积更小,并且能够灵活地扩展功能),根据应用组件设计和业务需求选择。

  3. 多 HAP/HSP 引用相同 HAR 包的影响:会存在 HAR 包中的单例失效,影响应用冷启动性能。可将 HSP 包改成 HAR 包以缩短冷启动阶段耗时。

五、单 HAP 工程

  1. 不包含按需加载模块:可全部采用 HAR 进行开发设计,好处是节省 HSP 的安装和加载成本、可做类型推断和编译优化、代码工程架构简单。

  2. 包含按需加载模块:需考虑 App Size(应用大小)与启动性能的平衡,可将公共依赖模块封装在 HSP 模块壳中以优化 App Size,或直接依赖公共 HAR 包以优化性能。

六、多 HAP 工程

  1. 包含公共能力模块:需在 App Size 与启动性能之间做平衡,可采用性能优先模型(除产品组件中存在 HAP 包之外,其余均是 HAR 包)或 App Size 优先模型(将公共的 HAR 包封装到 HSP 工程中)。

  2. 不包含公共能力模块:可参考单 HAP 场景。

总之,应用开发者需根据自身技术架构选择适合的工程模块化模型,并根据业务和技术架构的演进而演进,在 HAP、HAR 和 HSP 三种类型中进行选择使用。

相关推荐
m0_685535081 小时前
光学设计自学
华为·光学·光学设计·光学工程·镜头设计
懿路向前1 小时前
HarmonyOS 粒子特效实战:马赛克切块提速 17.6×~38×:desiredRegion 重复读盘与一次解码管线(HarmonyOS)
华为·harmonyos
垆边人似月.2 小时前
华为题:LRU 缓存
缓存·华为
天府云创3 小时前
Agentic开发时代到来——鸿蒙PC三大原生开发工具公测
华为·操作系统·harmonyos·鸿蒙系统·cli·deveco·agentic
程序猿追3 小时前
Fleks 鸿蒙适配:从八个小球看实体和组件的变化
华为·harmonyos
Sunny_GMF3 小时前
Markdown 导出 HTML 实战:2.6MB 编辑器快照如何瘦身 71%(DOM 净化 + CSSOM 运行时裁剪)
编辑器·html·ai编程·harmonyos
m0_738185823 小时前
Flutter 鸿蒙化实战:the_apple_sign_in 适配 OpenHarmony,Apple 登录
flutter·华为·harmonyos·鸿蒙
神奇的代码在哪里3 小时前
原生鸿蒙 GBC 模拟器开发实录:用 Anime4K 把 160×144 画面实时放大到 1080P
harmonyos·鸿蒙·超分辨率·gbc模拟器·anime4k
m0_738185824 小时前
Flutter 鸿蒙化实战:umeng_analytics_plugin 适配 OpenHarmony,友盟统计
flutter·华为·harmonyos·鸿蒙
todoitbo4 小时前
把 XAMPP 搬到鸿蒙 PC:在鸿蒙 PC 上跑 Apache httpd 2.4.69实战项目
华为·apache·harmonyos·鸿蒙·开源鸿蒙·鸿蒙pc