“积木拼装”,HarmonyOS 弹性部署大揭秘!|HDC2021 技术分论坛
![“积木拼装”,HarmonyOS弹性部署大揭秘!|HDC2021技术分论坛](https://static001.geekbang.org/infoq/c8/c838a274c349348de645b2114ce10ac1.jpeg)
作者:peitaiyi,华为终端 OS 产品交付专家
HarmonyOS 是一款面向万物互联时代的、全新的分布式操作系统。在传统的单设备系统能力基础上,HarmonyOS 提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,实现更好的万物互联。那么,HarmonyOS 是如何用一套 OS 源码部署到多种终端的呢?本文将为你揭秘。
一、面临的挑战
首先,我们先简单介绍一套 OS 部署到多种终端面临的两大挑战。
传统 OS 能力比较单一:一套 OS 系统部署到多种终端,不仅要支持百 KB 到 GB 级的内存,还需支持主流 CPU 架构、板级的器件、各种 SoC 及外设模组。而传统 OS 大都是单设备操作系统,一套 OS 仅适配于一套设备,无法满足碎片化的硬件需求。
传统 OS 裁剪拼装能力差:产品形态分布于千行百业,大到汽车、电视、手机,小到手表、门铃、烤箱,不同功能的产品对 OS 的能力诉求不同,这要求 OS 可以灵活地剪和拼装。而传统 OS 裁剪拼装能力差,无法满足千行百业的产品。
![](https://static001.geekbang.org/infoq/82/82f1e2d2f33629ff47ce2953b5e71026.webp?x-oss-process=image/resize,p_80/format,jpg)
图 1 硬件和产品形态的碎片
二、HarmonyOS 应对策略
基于上述的挑战,HarmonyOS 应对策略是“OS 可大可小,部件一次开发可在多种终端上部署” 。
1. 部件介绍
部件是 HarmonyOS 系统能力的基本单元,具有可复用、可裁剪、可配置、可独立编译和测试的特点。以源码、配置和资源文件为划分依据,拥有独立的文件和目录,可在不同的设备上实例化为不同的库或二进制文件,图 2 所示。
从系统角度看,部件可视为任何能运行在 HarmonyOS 上的软件。从外部设备看,部件则可视为一个个按设备所需组装成 OS 的系统能力。
![](https://static001.geekbang.org/infoq/db/db88fa305f7488c3bc95e489d6c318b9.webp?x-oss-process=image/resize,p_80/format,jpg)
图 2 HarmonyOS 部件化示意图
2. 部件拼装
HarmonyOS 源码由“必选部件集”和“可选部件集”组成,必选部件集具有 HarmonyOS 特征的必选系统能力,可选部件集则具有产品可裁剪的系统能力。被裁剪的部件只会引起对应系统能力的缺失,不会引起系统的异常。
必选部件和可选部件像“积木”一样,根据设备硬件模块(摄像头、扬声器、屏幕、网络)与内存大小灵活拼装成不同的 OS 软件包,并部署到不同设备。
“大设备装大系统,小设备装小系统。”无论智能设备的运存大小如何,总能找到匹配 TA 的那一块系统积木。
![](https://static001.geekbang.org/infoq/99/999688dceab3dd3ad0a72892e7994ea8.webp?x-oss-process=image/resize,p_80/format,jpg)
图 3 积木拼装
HarmonyOS 部件拼装流程如图 4 所示。HarmonyOS 发布归一化的 SDK,应用开发者使用 SDK 和 IDE 进行跨设备的应用开发,再按不同的设备类型分发应用。同时,三方的部件也可以与 OS 软件包一起部署到设备中。
![](https://static001.geekbang.org/infoq/01/01c692082bd9d0b8ebc099576548ce6f.webp?x-oss-process=image/resize,p_80/format,jpg)
图 4 HarmonyOS 部件拼装流程
至此,相信大家对部件拼装有了一定的认识。随着万物互联时代的不断发展,HarmonyOS 将适配越来越多的硬件设备,这就使得部件开发将马不停蹄,以适应千行百业的硬件产品。开发者如何开发部件呢?下文将为你解答。
三、如何开发部件
我们都知道,HarmonyOS 是基于开源项目 OpenHarmony 开发的面向多种全场景智能设备的商用版本,HarmonyOS 的部件大都来自 OpenHarmony,所以下文对部件开发的解答,将围绕 OpenHarmony 部件的开发展开。
在 OpenHarmony 生态中有三大类开发者:OS 开发者、芯片解决方案厂商和产品解决方案厂商,如图 5 所示。
![](https://static001.geekbang.org/infoq/39/39b5bfdbcb11de2ed02c7c9a64f96cf5.webp?x-oss-process=image/resize,p_80/format,jpg)
图 5 OpenHarmony 开发者
OS 开发者提供 OpenHarmony 所需的部件,包括内核、驱动框架、图形、媒体等基础的系统能力。
芯片解决方案厂商对 OS 的驱动和接口进行适配,形成基于开发板的完整芯片解决方案。
产品解决方案厂商基于 OS 和成熟的芯片解决方案组装产品。
1. 部件标准化
部件开发前需完备部件详细设计,在此过程中部件标准化尤为重要。
部件标准化确定了部件的名称、功能、可配置的特性、详细的规格和依赖。一个典型的部件的定义,图 6 所示。它包含了部件的名称、功能描述、是否系统必选、ROM/RAM、可配置特性和依赖等等。部件的依赖应尽量简单合理,杜绝循环和冗余的依赖。禁止部件直接依赖特定硬件和产品。
![](https://static001.geekbang.org/infoq/98/98ef5132d48c1c621878312458e7a739.webp?x-oss-process=image/resize,p_80/format,jpg)
图 6 部件定义文件
只有 OS 的系统能力都按部件进行标准化后,对外的系统能力才能灵活按需拼装。
2. 部件、开发板和产品严格解耦
为了保持 OS 可裁剪可拼装的能力,部件开发过程中,部件与开发板和产品之间应严格解耦且可独立编译。至此,我们将开发视图分为 OS 部件、芯片解决方案和产品解决方案,如图 7 所示。“OS 部件”目录主要存放 OS 的能力集,比如内核、媒体、图形、电话、分布式软总线、安全等等。“芯片解决方案”目录主要存放芯片厂商基于某个开发板或者 SoC 对 OS 的适配。“产品解决方案”目录主要存放产品相关的配置以及厂商对 OS 接口的实现。
![](https://static001.geekbang.org/infoq/5b/5bdd141059a79067a049c49b37af2755.webp?x-oss-process=image/resize,p_80/format,jpg)
图 7 OpenHarmony 开发视图目录树示意图
基于 OpenHarmony 开发视图目录树,实现了部件、开发板和产品各自独立的开发,保障了三者良好的解耦性。
3. 全流程管控
部件在设计、开发和测试过程中,需严格管控整个流程。如图 8 所示,设计文档在对应 PMC 审核通过后方可启动部件的开发,在 SIG 组开发功能成熟后,再经 OpenHarmony 对应子系统的 committer 审核合入。合入后,测试团队将按部件独立测试验收,验收的范围不仅包括部件的功能和稳定性,还包括部件是否可独立编译、独立测试、依赖是否合入等等。HPM(HarmonyOS Package Manager)审核人员审核通过后,便可以申请 HPM 上架。
![](https://static001.geekbang.org/infoq/73/73d6b80f8fa32d5b24f38947f8422c40.webp?x-oss-process=image/resize,p_80/format,jpg)
图 8 HarmonyOS 部件管控流程
说明:
PMC(Projects Management Centre)是指项目管理委员会,负责 OpenHarmony 社区的管理工作,拥有代码库写权限、OpenHarmony 新版本发布、Roadmap 发布、新 PMC/Committer 等社区事务的投票权、以及新的 PMC 成员和 Committer 提名权。
SIG(Special Interest Group)是指特别兴趣小组,SIG 在 PMC 项目管理委员会指导下,负责 OpenHarmony 社区特定子领域及创新项目的架构设计、开源开发及项目维护等工作。
以上就是本期全部内容!相信大家对部件有了一定的认识,欢迎广大开发者参与到部件开发中。
评论