
HarmonyOS 应用的分层架构设计基于一套代码工程,支持华为手机、PC/2in1 等 1+8 全场景设备,实现"一次开发,多端部署"。
一、设计理念
HarmonyOS 应用分层架构包括三层:
-
产品定制层(Product Customization Layer)
-
基础特性层(Basic Feature Layer)
-
公共能力层(Common Capability Layer)
三层构建了清晰、高效、可扩展的设计架构。
二、逻辑模型
1. 产品定制层
产品定制层专注于满足不同设备或使用场景的个性化需求,包括:
-
UI 设计
-
资源和配置
-
特定场景的交互逻辑和功能特性
特性:
-
产品定制层的功能模块独立运作,依赖基础特性层和公共能力层实现具体功能
-
产品定制层作为应用的入口,是用户直接互动的界面
-
为了满足特定需求,产品定制层可以灵活调整和扩展,以适应各种使用场景
2. 基础特性层
基础特性层位于公共能力层之上,用于存放相对独立的功能 UI 和业务逻辑实现。
关键特性:
-
每个功能模块都具备高内聚、低耦合、可定制的特点,支持产品的灵活部署
-
为产品定制层提供稳健且丰富的基础功能支持,包括 UI 组件和基础服务
-
公共能力层为其提供通用功能和服务
-
为了增强系统的可扩展性和维护性,基础特性层对功能进行了模块化处理
举例:应用底部导航栏的每个选项都是一个独立的业务模块。
3. 公共能力层
公共能力层存放公共基础能力,包括:
-
公共 UI 组件
-
数据管理
-
外部交互
-
工具库
特性:
-
应用可调用这些公共能力
-
提供稳定可靠的功能支持,确保应用的稳定性和可维护性
公共能力层的四个组成部分
| 组成部分 | 说明 |
|---|---|
| 公共 UI 组件 | 设计为通用且高度可复用 ,确保在不同应用程序模块间保持一致的用户体验。提供标准化、友好的界面,帮助开发者快速实现常见的用户交互需求,如提示、警告和加载状态显示,从而提高开发效率和用户满意度 |
| 数据管理 | 负责应用程序中数据的存储和访问 ,包括应用数据、系统数据等。提供了统一的数据管理接口 ,简化数据的读写操作。通过集中式的数据管理方式,不仅使得数据的维护更为简单,而且能够保证数据的一致性和安全性 |
| 外部交互 | 负责应用程序与外部系统的交互,包括网络请求、文件 I/O、设备 I/O 等。提供统一的外部接口,简化应用程序与外部系统的交互。开发者可以方便地实现网络通信、数据存储和硬件接入,从而加速开发流程并保证程序的稳定性和性能 |
| 工具库 | 提供一系列常用工具函数和类,如字符串处理、日期时间处理、加密解密、数据压缩解压等,帮助开发者提高效率和代码质量 |
三、开发模型
1. 产品定制层
-
产品定制层的各个子目录会被编译成一个 Entry 类型的 HAP,作为应用的主入口
-
该层面向多种设备,集成相应功能和特性
-
产品定制层划分为多个功能模块,每个模块针对特定设备或使用场景设计,并根据产品需求进行功能和交互的定制开发
说明:
在产品定制层,可以从不同设备对应的应用 UX 设计和功能两个维度 ,结合具体的业务场景,选择一次编译生成相同或者不同的 HAP(或其组合) 。
通过使用定制多目标构建产物的定制功能 ,可以将应用所对应的 HAP 编译成各自的 .app 文件,用于上架到应用市场。
2. 基础特性层
在基础特性层中,功能模块根据部署需求被分为两类:
| 部署需求 | 模块类型 | 编译产物 |
|---|---|---|
| 需要通过 Ability 承载的功能 | Feature 类型的 HAP | HAP 包 |
| 不需要通过 Ability 承载,且需要实现按需加载 | HSP 模块 | HSP 包 |
| 不需要通过 Ability 承载,且不需要按需加载 | HAR 模块 | HAR 包 |
3. 公共能力层
-
公共能力层的各子目录将编译成 HAR 包
-
仅产品定制层和基础特性层可依赖 ,不允许反向依赖
-
该层提取模块化公共基础能力,为上层提供标准接口和协议,提高复用率和开发效率
四、部署模型
应用程序(.app 文件 )在流水线或应用市场上被解包为 N 个 Entry 类型的 HAP 和 N 个 Feature 类型的 HAP,根据设备类型和使用场景部署到不同设备,实现多端统一用户体验。
说明
当 Entry 类型的 HAP 和 Feature 类型的 HAP 被分发并部署到相应设备时,它们所依赖的 HSP 也会一同被分发并部署到相应设备上。
核心逻辑
-
每个 Entry 类型的 HAP 代表了应用的入口点
-
Feature 类型的 HAP 则包含了应用的特定功能模块
-
允许应用能够以模块化的方式适配和部署,从而满足不同设备和场景的需求
其价值
-
优化了应用的组织结构
-
确保了应用在各种设备和场景中的一致性
-
通过根据设备类型和使用场景区分和部署不同的 HAP,用户在任何设备或场景中都能获得统一且高质量的体验
五、各层职责
| 层级 | 核心职责 | 编译产物 | 依赖关系 |
|---|---|---|---|
| 产品定制层 | 满足不同设备/场景的个性化需求,UI 设计、资源配置、特定交互逻辑 | Entry 类型 HAP(可定制多目标) | 依赖基础特性层和公共能力层 |
| 基础特性层 | 存放相对独立的功能 UI 和业务逻辑,模块化设计 | Feature 类型 HAP / HAR / HSP | 依赖公共能力层 |
| 公共能力层 | 公共 UI 组件、数据管理、外部交互、工具库 | HAR 包 | 仅被上层依赖,不允许反向依赖 |
分层架构的核心思想是**"分层解耦 + 模块化 + 按需部署"**:
-
分层解耦:三层各司其职,依赖单向,便于维护
-
模块化:基础特性层按业务拆分成独立模块,高内聚低耦合
-
按需部署:通过 HAP / HAR / HSP 的不同组合,适配手机、PC/2in1 等多种设备
如果要做多端应用,建议按这个架构规划:
-
公共能力抽到公共能力层,编译成 HAR 复用
-
业务功能按模块拆到基础特性层,根据是否需要 Ability 和按需加载选择 HAP / HAR / HSP
-
设备定制放产品定制层,用多目标构建生成不同 HAP,实现"一次开发,多端部署"