鸿蒙模块化

一、模块化设计理念

在大型软件工程中,模块化是将复杂系统拆解为功能模块,以提高可维护性和可拓展性。在 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 三种类型中进行选择使用。

相关推荐
贾伟康1 小时前
【时光清单|17】HarmonyOS ArkTS 亮暗色与视觉令牌实战:集中颜色、间距和交互状态避免页面割裂
harmonyos·arkts·arkui·深色模式·设计系统
贾伟康2 小时前
【时光清单|15】HarmonyOS ArkTS 本地状态持久化实战:让保存、删除和页面返回后的数据即时一致
harmonyos·arkts·状态管理·preferences·arkdata
HarmonyOS_SDK10 小时前
焕新鸿蒙应用权限管理方案,应用授权体验再升级
harmonyos
黑臂麒麟2 天前
HarmonyOS鸿蒙实战应用7:随手账本——数据导出与分享
华为·app·arkts·鸿蒙
贾伟康2 天前
【天体运行模拟|11】HarmonyOS ArkTS 收藏与笔记实战:同步知识页和个人学习记录
harmonyos·arkts·preferences·多设备适配·arkdata
2501_919749032 天前
华为鸿蒙录音可视化APP—小羊声觉
华为·harmonyos·鸿蒙
大雷神2 天前
HarmonyOS AR Engine深度估计实战——把毫米距离画成实时热力图
华为·ar·harmonyos
GKxx2 天前
在 HarmonyOS 上给 QEMU 搭一个最小 aarch64 Linux guest(内核 + busybox initramfs)
linux·华为·qemu·harmonyos·鸿蒙·鸿蒙pc
黑臂麒麟2 天前
屏幕信息全解析:HarmonyOS的分辨率、刷新率、折叠状态一个API搞定
华为·arkts·鸿蒙
黑臂麒麟2 天前
HarmonyOS 网络连接诊断实战:检测网络状态、WiFi 切换、弱网监测一网打尽
网络·华为·arkts·鸿蒙