HarmonyOS应用多Module设计机制:解锁高效开发新姿势

目录

一、HarmonyOS 应用开发的多 Module 设计机制是什么

二、多 Module 设计机制的原理

(一)模块类型

(二)标识机制

(三)项目结构与应用安装流程

三、多 Module 设计机制的优势

(一)功能解耦

(二)按需加载

(三)团队协作

(四)可维护性

四、多 Module 设计机制的使用场景与案例分析

(一)使用场景

(二)案例分析

五、总结与展望


一、HarmonyOS 应用开发的多 Module 设计机制是什么

在 HarmonyOS 应用开发中,多 Module 设计机制是一项极为关键且具有创新性的特性 ,是整个应用开发架构的核心。简单来说,多 Module 设计机制允许开发者将一个复杂的应用程序,按照不同的功能特性、业务逻辑或者设备适配需求,拆分成多个相对独立的模块(Module)。每个 Module 就像是一个具有特定功能的 “小零件”,它们既可以独立进行开发、编译和测试,又能相互协作,共同构建成一个完整的应用程序。

以一个综合类的电商应用为例,可能会拆分成商品展示模块、购物车模块、支付模块、用户管理模块等。商品展示模块负责展示各类商品的图片、价格、描述等信息;购物车模块专注于管理用户添加的商品、计算总价以及处理商品数量的增减;支付模块则聚焦于实现安全可靠的支付流程;用户管理模块负责用户的注册、登录、信息修改等操作。这些模块相互独立,开发者可以针对每个模块的特点进行专门的优化和维护 。

这种设计机制与传统的应用开发模式有着显著的区别。在传统开发模式中,整个应用往往是一个紧密耦合的整体,所有的功能代码都混合在一起,这使得代码的维护和扩展变得极为困难。而 HarmonyOS 的多 Module 设计机制打破了这种局面,实现了功能的模块化和松耦合。它就像是将一座大型建筑拆分成多个独立的小房间,每个房间都有自己独特的功能和用途,同时又通过合理的布局和通道相互连接,既方便了管理和维护,又增强了整体的灵活性和可扩展性。

二、多 Module 设计机制的原理

(一)模块类型

在 HarmonyOS 中,Module 主要分为 Ability 类型和 Library 类型 ,每一种类型都有着独特的作用和特性,它们相互配合,共同构建出灵活且高效的应用架构。

  • Ability 类型:这是用于实现应用功能和特性的模块,编译后会生成以.hap 为后缀的文件,即 HAP(Harmony Ability Package)包 ,它是应用安装和运行的基本单位,一个应用中可以包含一个或多个 HAP 包,具体又分为以下两种:
    • entry 类型的 Module:作为应用的主模块,它就像是一座大厦的大门和核心区域,包含应用的入口界面、入口图标和主功能特性 ,编译后生成 entry 类型的 HAP。每一个应用分发到同一类型的设备上的应用程序包,只能包含唯一一个 entry 类型的 HAP ,它是应用启动时最先加载的部分,为用户呈现应用的初始界面和核心功能,就如同电商应用的首页展示、用户登录等基础功能通常都在 entry 模块中实现。
    • feature 类型的 Module:这是应用的动态特性模块,编译后生成 feature 类型的 HAP ,可以看作是大厦里的一些特色功能区域,如会议室、健身房等。一个应用中可以包含一个或多个 feature 类型的 HAP,也可以不包含 。它作为应用能力的扩展,可以根据用户的需求和设备类型进行选择性安装 。例如,电商应用中的跨境购物功能、高端会员专属功能等,就可以放在 feature 模块中,用户如果有相关需求再进行下载安装,这样既节省了用户设备的存储空间,又能满足不同用户的个性化需求。
  • Library 类型:主要用于实现代码和资源的共享,不能单独运行,但可以被其他的 Module 多次引用,就像是大厦建设中使用的通用建筑材料和工具,合理地使用该类型的 Module,能够降低开发和维护成本 ,分为以下两种:
    • Static Library(静态共享库):编译后会生成一个以.har 为后缀的文件,即静态共享包 HAR(Harmony Archive) 。它在编译时会直接被打包到引用它的模块中,就像在建筑中,一旦使用了某种固定的建筑材料,它就成为了建筑结构的一部分。例如,多个模块都需要使用的通用工具类、基础 UI 组件等,就可以放在 Static Library 中,实现代码的复用 。
    • Shared Library(动态共享库):编译后会生成一个以.hsp 为后缀的文件,即动态共享包 HSP(Harmony Shared Package) 。它与 Static Library 不同,在运行时才被加载,并且在同一个进程中代码只会存在一份,就像大厦里的一些可随时调用的公共服务,多个区域可以共享使用,避免了资源的重复占用。例如,多个 HAP 模块都需要使用的网络请求模块、数据库操作模块等,使用 Shared Library 可以减少内存开销,提高应用的性能 。

(二)标识机制

在 HarmonyOS 应用中,每个 HAP 包都由唯一的 Bundle Name(应用包名)和 Module Name(模块名)共同标识 ,它们就像是每个人的身份证号和姓名,共同确定了一个人的唯一身份。

  • Bundle Name:在整个系统中唯一标识一个应用,遵循反向域名命名规范,比如 “com.example.myapplication” ,确保了在系统中的全局唯一性。无论应用包含多少个模块,Bundle Name 始终保持一致,就像一个家族的姓氏,所有家族成员都共享这个姓氏,通过 Bundle Name,系统可以准确地区分不同的应用 。
  • Module Name:则在应用内部唯一标识一个模块,使得同一应用的不同模块可以被准确区分和管理 ,就像家族中每个成员的名字,各不相同,用于区分家族内部的不同个体。例如,在一个包含多个功能模块的电商应用中,商品展示模块、购物车模块、支付模块等都有各自独特的 Module Name,这样在应用开发和运行过程中,就可以方便地对各个模块进行调用、管理和维护 。

(三)项目结构与应用安装流程

一个标准的 HarmonyOS 应用项目具有清晰且严谨的目录结构,每个目录都承担着特定的职责,共同协作构建出完整的应用。以一个常见的 HarmonyOS 应用项目为例,其目录结构大致如下:

 

MyHarmonyApp/

├── AppScope/ // 应用级作用域

│ ├── app.json5 // 应用级配置文件,声明应用的全局配置信息,如应用Bundle名称、应用名称、应用图标、应用版本号等

│ └── resources/ // 应用级资源

│ ├── base/ // 基础资源

│ │ ├── element/ // 基础元素资源,如字符串、颜色等定义

│ │ │ └── string.json // 字符串资源文件

│ │ ├── media/ // 媒体资源,如图片、音频等

│ │ │ └── app_icon.png// 应用图标

│ │ └── profile/ // 配置文件

│ └── en_US/ // 英文资源,用于多语言支持

├── entry/ // 入口模块,应用的主模块

│ ├── src/ // 源代码目录

│ │ ├── main/ // 主要代码

│ │ │ ├── ets/ // ArkTS代码目录

│ │ │ │ ├── entryability/

│ │ │ │ │ └── EntryAbility.ets // 入口Ability,负责应用的启动和初始化

│ │ │ │ ├── entrybackupability/

│ │ │ │ │ └── EntryBackupAbility.ets // 备份Ability(假设存在)

│ │ │ │ └── pages/ // 页面代码,存放应用的各个页面布局和逻辑

│ │ │ │ └── Index.ets // 首页代码

│ │ │ ├── resources/ // 模块资源

│ │ │ │ ├── base/ // 基础资源

│ │ │ │ │ ├── element/

│ │ │ │ │ │ ├── color.json // 颜色资源文件

│ │ │ │ │ │ └── string.json// 字符串资源文件

│ │ │ │ │ ├── media/ // 媒体资源

│ │ │ │ │ │ ├── layered_image.json

│ │ │ │ │ │ └── startIcon.png

│ │ │ │ │ └── profile/

│ │ │ │ │ ├── main_pages.json // 页面配置文件

│ │ │ │ │ └── backup_config.json // 备份配置文件(假设存在)

│ │ │ │ └── en_US/ // 英文资源

│ │ │ └── module.json5 // 模块配置文件,声明模块基本信息、支持的设备类型、所含的组件信息、运行所需申请的权限等

│ │ └── ohosTest/ // 测试代码目录,用于编写和存放单元测试等测试代码

│ ├── build-profile.json5 // 构建配置文件,包含当前模块的构建信息,如签名配置、产品配置等

│ └── hvigorfile.ts // 构建脚本文件,用于自定义编译构建工具版本、控制构建行为的配置参数

├── build-profile.json5 // 应用构建配置文件,包含应用级的构建信息,如签名、产品配置等

└── hvigorfile.ts // 应用构建脚本文件,用于控制应用整体的编译构建过程

当用户从应用市场下载一个 HarmonyOS 应用时,整个安装流程就像是一场有序的物流配送和组装过程:

  1. 下载 APP 包:用户在应用市场点击下载应用时,实际下载的是一个.app 文件,这个文件就像是一个装满了各种零件的大包裹,包含了应用运行所需的所有 HAP 包和相关资源 。
  1. 解析 APP 包:系统接收到这个.app 文件后,会首先对其进行解析,就像打开包裹,查看里面都有哪些零件。系统会读取 APP 包的结构和元数据,了解其中包含了哪些 HAP 包以及它们的相关信息 。
  1. 提取 HAP 包:在解析完成后,系统会从 APP 包中提取出所有的 HAP 包,将这些 “零件” 一一拿出来,准备进行下一步的处理 。
  1. 验证 HAP 包:为了确保应用的安全性和完整性,系统会对每个提取出来的 HAP 包进行完整性和签名验证,就像检查每个零件是否合格,有没有被损坏或篡改 。只有通过验证的 HAP 包才能继续进行安装 。
  1. 安装 HAP 包:经过验证的 HAP 包会被安装到设备的相应位置,并注册到系统中 ,就像将合格的零件安装到正确的位置,使其能够正常工作。系统会将 entry 类型的 HAP 作为应用的入口进行初始化,其他 feature 类型的 HAP 也会根据需要进行加载和配置 ,最终完成应用的安装,让用户可以顺利使用应用 。

三、多 Module 设计机制的优势

(一)功能解耦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大雨淅淅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值