首页 > 数据库 > 数据库开发技术 > 鸿蒙Next 组件化与插件化最佳实践分析总结
| 版本 | 发布时间 | 核心定位 |
|---|---|---|
| HarmonyOS 1.0 | 2019年8月 | 首个版本,仅应用于华为智慧屏,奠定分布式架构雏形 |
| HarmonyOS 2.0 | 2020年9月 | 拓展至手机、车机等多设备,支持分布式技术、超级终端 |
| HarmonyOS 3.0 | 2022年7月 | 强化超级终端能力,支持更多设备组合,完善鸿蒙智联与隐私安全 |
| HarmonyOS 4.0 | 2023年8月 | 强化智能互联与 AI 交互,优化多屏投屏等跨设备体验 |
| HarmonyOS 4.2 | 2024年4月 | 优化界面,提升卫星连接速度,增强广告拦截能力 |
| HarmonyOS 4.3 | 2024年 | 安卓适配的最后版本,后续机型逐步过渡到原生鸿蒙 |
| HarmonyOS 5.0(NEXT) | 2024年10月 | 中国首个全栈自研操作系统,彻底脱离安卓,实现自主可控 |
| HarmonyOS 6 | 2025年10月 | 升级方舟引擎,性能提升15%;新增星河互联架构,强化AI安全能力 |
核心特征:混合内核架构(LiteOS + Linux),兼容 AOSP 安卓应用
┌─────────────────────────────────────────────┐
│ 应用层 │
│ ┌───────────────┐ ┌───────────────────┐ │
│ │ 鸿蒙原生应用 │ │ 安卓兼容层(APK) │ │
│ └───────────────┘ └───────────────────┘ │
├─────────────────────────────────────────────┤
│ 框架层 │
│ ┌───────────────┐ ┌───────────────────┐ │
│ │ ArkUI框架 │ │ Android框架 │ │
│ └───────────────┘ └───────────────────┘ │
├─────────────────────────────────────────────┤
│ 系统服务层 │
│ ┌───────────────────────────────────────┐ │
│ │ 分布式软总线 · 分布式数据管理 · AI框架 │ │
│ └───────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ 内核层(混合架构) │
│ ┌───────────────┐ ┌───────────────────┐ │
│ │ LiteOS │ │ Linux │ │
│ └───────────────┘ └───────────────────┘ │
└─────────────────────────────────────────────┘
组件化能力:
核心特征:全栈自研,彻底脱离 Linux 内核和 AOSP,采用微内核架构
┌─────────────────────────────────────────────┐
│ 应用层 │
│ ┌───────────────┐ ┌───────────────────┐ │
│ │ 鸿蒙原生应用 │ │ 元服务(Meta) │ │
│ │ (HAP格式) │ │ (免安装服务) │ │
│ └───────────────┘ └───────────────────┘ │
├─────────────────────────────────────────────┤
│ 框架层 │
│ ┌───────────────────────────────────────┐ │
│ │ ArkTS/ArkUI · Ability框架 · AI框架 │ │
│ └───────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ 系统服务层 │
│ ┌───────────────────────────────────────┐ │
│ │ 星盾安全架构 · 分布式能力 · 方舟引擎 │ │
│ └───────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│ 内核层(微内核架构) │
│ ┌───────────────────────────────────────┐ │
│ │ 鸿蒙微内核(HarmonyOS) │ │
│ │ 内核代码量仅约10KB,形式化验证 │ │
│ └───────────────────────────────────────┘ │
└─────────────────────────────────────────────┘
组件化能力:
| 时间 | 里程碑 | 技术意义 |
|---|---|---|
| 2012年 | 华为开始规划自研操作系统 | 战略布局,防范供应链风险 |
| 2017年 | 鸿蒙内核1.0完成技术验证 | 微内核架构奠定基础 |
| 2019年8月 | HarmonyOS 1.0正式发布 | 首个版本,智慧屏首发 |
| 2020年9月 | HarmonyOS 2.0发布 | 拓展至手机,分布式能力强化 |
| 2023年8月 | HarmonyOS 4.0发布 | AI交互增强,跨设备体验优化 |
| 2023年9月 | 启动HarmonyOS NEXT计划 | 宣布抛弃Linux内核及AOSP |
| 2024年1月 | 鸿蒙星河版开发者预览 | 面向开发者开放纯血鸿蒙体验 |
| 2024年10月 | HarmonyOS NEXT 5.0发布 | 全栈自研,中国首个自主可控操作系统 |
| 2025年10月 | HarmonyOS 6发布 | 方舟引擎升级,性能提升15% |
| 维度 | FA 模型(旧) | Stage 模型(新) |
|---|---|---|
| 能力单元 | PageAbility / ServiceAbility | UIAbility + ExtensionAbility |
| 生命周期 | 粒度粗(onStart/onStop) | 精细控制(WindowStage + AbilityStage) |
| 上下文管理 | AbilityContext 混杂 | 分离为 UI Context 与 Application Context |
| 多实例支持 | 有限 | 原生支持多窗口、多实例 |
| 安全性 | 权限粒度较粗 | 更严格的沙箱隔离与权限管控 |
// 1. UIAbility:主界面载体
export default class EntryAbility extends UIAbility {
onCreate(want, launchParam) { /* 初始化 */ }
onWindowStageCreate(windowStage) {
windowStage.loadContent('pages/Index', (err, data) => {
// 注入全局状态或初始化路由
});
}
}
// 2. ExtensionAbility:扩展能力容器(能力即插件)
// 支持 FormExtension(卡片)、ServiceExtension(后台服务)、InputMethodExtension(输入法)
// 3. AbilityStage:应用级生命周期
export default class MyAbilityStage extends AbilityStage {
onAcceptWant(want) { return 'default'; } // 处理隐式启动
onConfigurationUpdated(config) { /* 监听配置变化 */ }
}
| 特性 | HAP | HAR | HSP |
|---|---|---|---|
| 独立运行 | ✓ 可独立安装运行 | ✗ 编译时集成 | ✗ 运行时加载,依赖HAP |
| 声明UIAbility | ✓ 支持 | ✗ 禁止 | ✗ 禁止 |
| 资源访问 | 直接使用 $r() | 直接使用 $r() | 需 createModuleContext() |
| 包体积影响 | 多模块重复代码导致膨胀 | 静态编译,可能重复 | ✓ 减少冗余(运行时单例) |
| 适用场景 | 核心功能/动态特性 | 工具类、UI组件等无状态资源 | 按需启用的非核心功能、插件功能 |
需独立运行? → 是 → 使用 HAP
↓ 否
需声明 Ability? → 是 → 使用 HAP
↓ 否
多模块复用? → 否 → 使用 HAR
↓ 是
包体积敏感? → 是 → 使用 HSP
↓ 否
使用 HAR
┌───────────────────────────────────────┐
│ 产品定制层(products) │ ← 应用入口层,基于设备形态组合特性
│ └── Entry HAP / Feature HAP │
├───────────────────────────────────────┤
│ 基础特性层(feature) │ ← 独立业务模块(登录、支付、搜索)
│ └── 高内聚,标准化接口向上提供服务 │
├───────────────────────────────────────┤
│ 公共能力层(common) │ ← 全局复用能力,通过 HAR 包跨工程复用
│ └── 网络请求、UI组件、工具类、数据存储 │
└───────────────────────────────────────┘
| 装饰器类型 | 名称 | 主要功能 | 适用场景 |
|---|---|---|---|
| 构建函数 | @Builder | 自定义构建函数,复用UI元素 | 需要复用UI结构但不形成独立组件 |
| 构建函数 | @LocalBuilder | 维持组件父子关系的构建函数 | 组件内部使用,保持状态一致性 |
| 构建函数 | @BuilderParam | 引用@Builder函数,类似slot | 自定义组件需要外部传入UI结构 |
| 样式扩展 | @Styles | 定义组件重用样式 | 提取通用样式 |
| 样式扩展 | @Extend | 扩展原生组件样式 | 为特定组件类型添加扩展样式 |
| 功能增强 | @Reusable | 组件复用 | 优化组件实例复用,提升性能 |
.d.ts 文件定义接口契约// HSP 模块配置(module.json5)
{
"module": {
"name": "agent-plugin-hsp",
"type": "shared", // 必填:声明为动态共享包
"mainElement": "index", // 必填:指定对外暴露的接口文件
"deviceTypes": ["phone", "tablet", "car"]
}
}
// HSP 资源访问方式
const hspCtx = createModuleContext('com.example.shared');
const icon = hspCtx.resourceManager.getMedia($r('app.media.icon'));
┌─────────────────────────────────────────┐
│ Entry HAP(主壳) │
│ ┌───────────┐ ┌───────────┐ │
│ │ 路由中心 │ │ 状态管理 │ │
│ └─────┬─────┘ └─────┬─────┘ │
└─────────┼─────────────┼─────────────────┘
│ │
┌─────────▼─────────────▼─────────────────┐
│ 公共能力 HSP │
│ ┌───────────┐ ┌───────────┐ │
│ │ 网络请求库 │ │ 工具类库 │ │
│ └───────────┘ └───────────┘ │
└─────────────────────────────────────────┘
│ │
┌─────────▼─────────────▼─────────────────┐
│ 业务插件 HSP(按需加载) │
│ ┌───────────┐ ┌───────────┐ │
│ │ 数据分析 │ │ 视频编辑 │ ... │
│ └───────────┘ └───────────┘ │
└─────────────────────────────────────────┘
| 价值 | 说明 |
|---|---|
| 减少包体积 | 首次下载不含非核心功能,安装包更小 |
| 减少系统资源 | 节省 ROM(安装空间)和 RAM(启动加载) |
| 架构演进 | 模块间耦合关系清晰,利于架构演进 |
| 独立更新 | 插件可独立发布更新,无需全量审核 |
问题:多 HAP/HSP 引用相同 HAR 包时,HAR 中的单例模式会失效,导致重复执行初始化代码。
优化方案:
| 方案 | 场景 | 效果 |
|---|---|---|
| 将 HSP 替换为 HAR | 性能优先场景 | 启动耗时从 3125ms 降至 853.9ms(提升约 73%) |
| 封装公共 HSP 模块壳 | 包体积优先场景 | 减少重复代码,最小化 App Size |
utils.hsp)oh-package.json 区分必需模块与可选模块| 问题 | 原因 | 解决方案 |
|---|---|---|
| 模块过度拆分 | 通信成本增加 | 按"独立功能闭环"拆分 |
| 分布式适配缺失 | 跨设备场景后期重构 | 提前封装分布式接口 |
| 冗余依赖 | 包体积过大 | 通过 oh-package.json 区分依赖类型 |
| 资源访问崩溃 | HSP 资源隔离 | 使用 createModuleContext() 获取资源 |
随着鸿蒙生态的完善,架构还可进一步融入:
建议开发者从中小型应用入手落地三层架构,积累实践经验后再向复杂应用扩展。
原文作者:;如有侵权,请联系管理员删除。