HarmonyOS应用分层架构设计

HarmonyOS 应用的分层架构设计基于一套代码工程,支持华为手机、PC/2in1 等 1+8 全场景设备,实现"一次开发,多端部署"。

一、设计理念

HarmonyOS 应用分层架构包括三层:

  1. 产品定制层(Product Customization Layer)

  2. 基础特性层(Basic Feature Layer)

  3. 公共能力层(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,实现"一次开发,多端部署"

相关推荐
MardaWang3 小时前
当滚动逃离了框架 ——HarmonyOS Web 与原生混排滚动的冲突本质与解法
harmonyos·arkts·鸿蒙·deveco studio
tsqtsqtsq03094 小时前
DevEco Studio 介绍
harmonyos
HwJack207 小时前
【共创稿事节】HarmonyOS 7文旅展陈展厅大空间 3DGS 重建的分块策略与拼接踩坑
3d·华为·harmonyos
m0_738185829 小时前
Flutter 鸿蒙化实战:media_info 适配 OpenHarmony,媒体信息与缩略图
flutter·华为·harmonyos·鸿蒙·媒体
m0_7381858210 小时前
Flutter 鸿蒙化实战:just_audio 适配 OpenHarmony,功能强大的播放器
flutter·华为·harmonyos·鸿蒙
翼辉cto10 小时前
Kotlin Multiplatform 三方库 SQLDelight 的 OpenHarmony 鸿蒙化适配实战
开发语言·kotlin·harmonyos
SuperHeroWu710 小时前
TraeCode 国内版接入 DevEco CLI:用官方知识开发鸿蒙应用
ai编程·harmonyos·知识库·trae·aicoding·skills·deveco cli
2501_9197490311 小时前
华为鸿蒙免费口算练习APP—小羊口算
华为·harmonyos·鸿蒙