OpenHarmony是一个面向全场景,支持各类设备的系统。这里的设备包括像MCU单片机这样资源较少的芯片,也支持像RK3568这样的多核CPU。为了能适应各种硬件,OpenHarmony提供了像LiteOS、Linux这样的不同内核,并基于这些内核形成了不同的系统类型,同时又在这些系统中构建了一套统一的系统能力。内核与系统类型的对应关系如图1-1所示。
图1-1 内核与系统类型的对应关系
为了保证在不同硬件上的易用性,OpenHarmony定义了3种基础系统类型,设备开发者通过选择基础系统类型完成必选组件集配置后,便可实现最小系统的开发。
面向MCU类处理器,例如ARM Cortex-M、RISC-V 32位的设备,轻量系统硬件资源极其有限,支持的设备最小内存为128KB,可以提供多种轻量级网络协议、图形框架,以及丰富的IoT总线读写器件等。可支撑的产品如智能家居领域的连接类模组、传感器设备、穿戴类设备等。典型的设备、开发板有Hi3861鸿蒙小车、Neptune开发板。
面向应用处理器,例如ARM Cortex-A的设备,支持的设备最小内存为1MB,可以提供更高的安全能力、标准的图形框架、视频编解码的多媒体能力。可支撑的产品如智能家居领域的IPCamera、电子猫眼、路由器及智慧出行领域的行车记录仪等。
面向应用处理器,例如ARM Cortex-A的设备,支持的设备最小内存为128MB,可以提供增强的交互能力、3D GPU及硬件合成能力、更多控件及动效更丰富的图形能力、完整的应用框架。可支撑的产品如高端的冰箱显示屏。
OpenHarmony整体采用分层设计,由下向上依次为内核层、系统服务层、框架层和应用层。系统功能按照“系统—子系统—组件”逐级展开,可根据设备性能和实际需求裁剪组件实现系统专用性。OpenHarmony技术架构如图1-2所示。
内核层包括内核子系统和驱动子系统,其中内核子系统采用了混合内核(Linux内核和LiteOS)设计,支持针对不同资源受限设备选用适合的操作系统内核。内核抽象层(Kernel Abstract Layer,KAL)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外围设备管理等。
图1-2 OpenHarmony技术架构
1)内核子系统
内核子系统是OpenHarmony操作系统的核心部分,主要负责系统的启动和运行,提供了处理器管理、内存管理、进程管理、调度管理、中断管理等基本功能。它的设计目标是为各个子系统提供一个可靠的运行环境,同时支持多种处理器架构和多种设备。
OpenHarmony针对不同量级的系统使用了不同形态的内核,分别为LiteOS和Linux。轻量系统、小型系统可以选用LiteOS;小型系统和标准系统可以选用Linux。详细情况如表1-1所示。
表1-1 内核选用情况
OpenHarmony LiteOS内核是面向IoT领域的实时操作系统内核,它同时具备RTOS轻快和Linux易用的特点。OpenHarmony LiteOS内核的源代码分为kernel_liteos_a和kernel_liteos_m两个代码仓库,其中kernel_liteos_a主要针对小型系统和标准系统,而kernel_liteos_m则主要针对轻量系统。OpenHarmony LiteOS-A内核架构如图1-3所示。
2)驱动子系统
驱动子系统采用C面向对象编程模型构建,通过平台解耦、内核解耦,兼容不同内核,提供了归一化的驱动平台底座,旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。为了缩减驱动开发者的驱动开发周期,降低三方设备驱动集成难度,OpenHarmony驱动子系统支持以下关键特性和能力。
(1)弹性化的框架能力:在传统驱动框架能力的基础上,OpenHarmony驱动子系统通过构建弹性化的框架能力,可支持百千级别到百兆级别容量的终端产品形态部署。
图1-3 OpenHarmony LiteOS-A内核架构
(2)规范化的驱动接口:定义了常见驱动接口,为驱动开发者和使用者提供丰富、稳定的接口,并和面向手机、平板电脑、智慧屏等设备驱动接口保持API兼容性。
(3)组件化的驱动模型:为开发者提供更精细化的驱动管理,开发者可以对驱动进行组件化拆分,使驱动开发者可以更多地关注驱动与硬件交互部分。同时,系统也预置了部分模板化的驱动模型组件,如网络设备模型等。
(4)归一化的配置界面:提供统一的配置界面,构建跨平台的配置转换和生成工具,实现跨平台的无缝切换。
为了方便驱动开发者更易开发OpenHarmony驱动程序,OpenHarmony驱动子系统在DevEco集成了驱动开发套件工具,支持驱动工程管理、驱动模板生成、配置管理等界面化操作。
综上,可根据不同设备形态部署环境,其中基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
系统服务层是OpenHarmony的核心能力集合,通过框架层对应用程序提供服务,其中包括系统基本能力子系统集、基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集,横跨了系统服务层和框架层。
1)系统基本能力子系统集
系统基本能力子系统集为分布式应用在多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全、AI等子系统组成。
系统基本能力子系统集是OpenHarmony中最重要的子系统集,下面对该子系统集进行介绍。
(1)ArkUI框架、Ability框架和用户程序框架。这部分涉及的是OpenHarmony中的JS UI框架,它是OpenHarmony UI开发框架的一部分,提供了基础类、容器类、画布类等UI组件和标准CSS动画能力,为开发者提供了UI开发的API基础。JS UI框架支持类Web编程范式,使用类HTML和CSS作为页面布局和样式的开发语言,使用ECMAScript规范的JavaScript语言作为页面业务逻辑的开发语言。使用JS UI框架,开发者可以避免编写UI状态切换的代码,视图配置信息更加直观,从而提高开发效率。在每个OpenHarmony应用程序中,JS UI框架都扮演着重要的角色。
(2)分布式框架。分布式软总线、分布式数据管理、分布式任务调度为OpenHarmony操作系统提供系统服务层基础,为分布式应用运行、调度、迁移操作提供基础能力。
分布式软总线:分布式软总线是多设备终端的统一基座,为设备间的无缝互联提供了统一的分布式通信能力,能够快速发现并连接设备,高效地传输任务和数据。其包括的通信能力有WLAN服务能力、蓝牙服务能力、软总线、进程间通信(Remote Procedure Call,RPC)等。分布式软总线子系统架构如图1-4所示。
图1-4 分布式软总线子系统架构
分布式数据管理:基于分布式软总线之上的能力,实现了应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据可无缝衔接,为打造一致、流畅的用户体验创造了基础条件。分布式数据管理子系统架构如图1-5所示。
分布式任务调度:分布式任务调度基于分布式软总线、分布式数据管理、分布式Profile等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、绑定/解绑及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况并结合用户的习惯和意图,选择最合适的设备运行分布式任务。
图1-5 分布式数据管理子系统架构
(3)方舟多语言运行时子系统。由于Android系统对以Java语言编写的代码无法直接被编译为机器语言,因此必须由ART虚拟机提供支持。这样便会消耗大量硬件资源,从而使Android系统失去了性能优势。在Android诞生的初期,其性能问题常常被广大用户诟病。为此,华为公司研发了方舟编译体系。方舟编译体系包含了方舟编译器和方舟多语言运行时子系统。在方舟编译体系中,方舟编译器用来编译用户程序或库程序(用C/C++、Java、JavaScript等语言),可以编译成二进制机器码也可以编译成Maple IR的中间代码格式。在OpenHarmony中,通过方舟多语言运行时子系统的支持,可有效地提高Java等程序的运行效率,提高软件性能。方舟多语言运行时子系统是OpenHarmony中的重要一环,让OpenHarmony拥有优秀的性能优势。
(4)AI业务子系统:OpenHarmony提供原生的分布式AI能力。开源范围是提供了统一的AI引擎框架,实现算法能力快速插件化集成。框架中主要包含插件管理、模块管理和通信管理等模块,对AI算法能力进行生命周期管理和按需部署。后续会逐步定义统一的AI能力接口,便于AI能力的分布式调用。同时提供适配不同推理框架层级的统一推理接口。AI引擎框架如图1-6所示。
图1-6 AI引擎框架
(5)文件管理子系统是公共基础库的一个核心子系统,它提供了完整的文件数据管理解决方案,包括为应用提供安全的沙箱隔离技术、统一的公共文件管理能力、分布式文件系统和云接入文件系统访问框架、支持公共数据、跨应用、跨设备的系统级文件分享能力及存储管理能力和基础文件系统能力。这些功能可以保证用户数据的安全性和易用性,方便应用程序开发者进行文件数据管理。
文件管理子系统架构如图1-7所示。
图1-7 文件管理子系统架构
文件管理子系统对应用提供文件访问框架、文件分享框架、存储管理框架能力,其详细介绍如表1-2所示。
表1-2 文件管理子系统对应用的能力
(6)用户IAM(Identity and Access Management)子系统是用户身份和访问管理子系统,旨在为OpenHarmony提供统一的用户身份凭据信息管理和用户身份认证框架能力,支持多用户分别设置认证凭据信息,并根据用户设置的认证凭据信息提供用户身份认证功能,支撑锁屏等安全场景。同时,用户IAM子系统也提供API,支持三方开发者调用系统提供的身份认证能力实现业务对用户的访问控制要求。用户IAM子系统架构如图1-8所示。
图1-8 用户IAM子系统架构
用户IAM子系统分为统一用户认证框架和认证执行器两部分,其中统一用户认证框架部分包含统一用户认证和用户身份凭据管理。认证执行器管理提供认证资源管理和认证会话管理功能,支持系统内身份认证相关执行器统一管理和协同调度,支持不同类型的身份认证执行器灵活对接。基于统一用户认证框架,系统可以扩展支持多种认证能力。OpenHarmony框架当前已经支持的认证执行器包含口令认证和人脸认证,如果开发者想实现新的认证执行器,则只需在新的部件内实现认证相关功能,并且按照执行器管理模块定义的接口与统一用户认证框架对接。在用户IAM子系统内,将一个用户身份认证操作的最小执行单元称为执行器,如一个口令认证模块,处理口令采集、口令处理和比对、口令安全存储的全过程,因此可以抽象为一个口令认证的全功能执行器。
(7)多模输入子系统基于Linux原生驱动和HDF驱动接收多种设备输入事件,并对这些事件进行归一化和标准化处理,最终通过innerkit分发到ArkUI框架或用户程序框架。该子系统使开发者能够轻松地实现具有多维、自然交互特点的应用程序。
(8)图形子系统包括UI组件、布局、动画、字体、输入事件、窗口管理、渲染绘制等模块,构建基于轻量操作系统的应用框架,满足硬件资源较小的物联网设备;或者构建基于标准操作系统的应用框架,满足富设备(如平板电脑和轻智能机等)的OpenHarmony系统应用开发。
(9)安全子系统包括系统安全、数据安全、应用安全等功能,为OpenHarmony提供有效保护应用和用户数据的能力。安全子系统当前开源的功能包括应用完整性保护、应用权限管理、设备认证、密钥管理服务、数据传输管控。安全子系统架构如图1-9所示。
图1-9 安全子系统架构
接下来对安全子系统框架进行介绍。①安全子系统的对外API,部分API只针对系统应用开放;②应用权限管理模块为程序框架子系统提供权限管理功能,并为上层应用提供权限申请和授权状态查询接口;③应用完整性校验模块提供了以下能力支持:应用签名、应用安装校验、签名工具、签名证书生成规范、签名所需的公钥证书等机制;④设备认证为分布式设备互联提供密钥协商和可信设备管理能力。设备认证的目标是实现归一化的设备认证方案,实现覆盖1+8+ N 的设备绑定/认证方案;⑤数据传输管控:提供了数据传输管控相关的接口定义。在OpenHarmony中,数据传输管控模块负责为分布式服务提供数据跨设备传输时的管控策略。数据传输管控模块提供了数据传输管控相关的接口定义。数据传输管控接口为分布式服务提供数据跨设备传输时的管控策略,获取允许发送到对端设备的数据的最高风险等级;⑥定制子系统可满足在特定行业、地域等场景下使用时,对系统进行不同程度的定制以满足特定场景的使用需求。定制子系统提供支持企业设备管理和配置策略的能力如表1-3所示。
表1-3 企业设备管理和配置策略的能力
2)基础软件服务子系统集
基础软件服务子系统集提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X)等子系统组成。
(1)DFX子系统:在OpenHarmony中,DFX是为了提升质量属性软件设计,目前包含的内容主要有可靠性(Design For Reliability,DFR)和可测试性(Design For Testability,DFT)特性。提供的功能包括FaultLogger应用故障检测收集、HiLog日志打点、HiView插件平台、HiAppEvent应用事件记录接口及框架,HiSysEvent系统事件记录接口及服务。DFX子系统架构如图1-10所示。
图1-10 DFX子系统架构
(2)DeviceProfile子系统:设备硬件能力和系统软件特征的管理器,典型的Profile有设备类型、设备名称、设备操作系统类型、操作系统版本号等。DeviceProfile提供快速访问本地和远端设备Profile的能力,是发起分布式业务的基础。主要功能有本地设备Profile的查询、插入、删除,远程设备Profile的查询,跨设备同步Profile,订阅远程Profile变化的通知。DeviceProfile子系统架构如图1-11所示。
图1-11 DeviceProfile子系统架构
(3)XTS子系统:OpenHarmony生态认证测试套件的集合,当前包括acts(Application Compatibility Testsuite,应用兼容性测试)套件,后续会拓展dcts(Device Compatibility Testsuite,设备兼容性测试)套件等。acts用于存放相关测试用例源码与配置文件,其目的是帮助终端设备厂商尽早发现软件与OpenHarmony的不兼容性,确保软件在整个开发过程中满足OpenHarmony的兼容性要求。tools用于存放acts相关测试用例开发框架。
(4)事件通知子系统:OpenHarmony通过公共事件服务(Common Event Service,CES)为应用程序提供订阅、发布、退订公共事件的能力。公共事件可分为系统公共事件和自定义公共事件。①系统公共事件:系统将收集到的事件信息,根据系统策略发送给订阅该事件的用户程序。例如,系统关键服务发布的hap安装、更新、卸载等系统事件;②自定义公共事件:自定义一些公共事件用来实现跨应用的事件通信能力。每个应用都可以按需订阅公共事件,订阅成功且公共事件发布后,系统会把其发送给应用。这些公共事件可能来自系统、其他应用和应用自身。
(5)元能力子系统:实现对Ability的运行及对生命周期的统一调度和管理,应用进程能够支撑多个Ability,Ability具有跨应用进程间和同一进程内调用的能力。Ability管理服务统一调度和管理应用中的各Ability,并对Ability的生命周期变更进行管理。
(6)电话服务子系统:提供一系列API用于获取无线蜂窝网络和与SIM卡相关的一些信息。应用可以通过调用API获取当前注册网络名称、网络服务状态、信号强度及SIM卡的相关信息。
电源管理子系统架构如图1-12所示。
图1-12 电源管理子系统架构
(7)多媒体子系统:为开发者提供一套简单且易于理解的接口,使开发者能够方便地接入系统并使用系统的媒体资源。该子系统包含音视频、相机相关的媒体业务,如声频播放和录制、视频播放和录制、相机拍照和录制等功能。多媒体子系统架构如图1-13所示。
接下来对多媒体子系统框架中的服务层进行介绍。
①Media为应用提供播放、录制等接口,通过跨进程调用或直接调用方式,调用媒体引擎Gstreamer、Histreamer或其他引擎。在轻量设备上,Media部件调用Histreamer支持声频播放等功能。在小型设备上,Media部件调用recorder_lite支持音视频录制,默认调用player_lite支持音视频播放。在标准设备上,Media部件调用Gstreamer支持音视频播放、音视频录制。
②Audio部件支持声频输入/输出、策略管理、声频焦点管理等功能。
③Image部件支持常见图片格式的编解码。
④MediaLibrary支持本地和分布式媒体数据访问管理。
图1-13 多媒体子系统架构
⑤Camera部件提供相机操作接口,支持预览、拍照、录像。
接下来对多媒体子系统框架中的引擎层进行介绍。
①Histreamer是轻量级媒体引擎,支持文件/网络流媒体输入、音视频解码播放、音视频编码录制、插件扩展。
②Gstreamer是开源引擎,支持流媒体、音视频播放、录制等功能。
多媒体子系统提供了三大类功能接口:音视频、相机和录音。开发者可以根据使用需求使用其中一类或多类接口。当使用简单播放和录制功能时,可以使用Player和Recorder快速完成功能。对于相机控制,开发者需要创建camerakit组件对象并注册事件回调,然后使用创建的camera对象进行预览、录像、抓拍和设置取流参数等操作。开发者可以参考多媒体开发指南来使用媒体接口。
3)硬件服务子系统集
硬件服务子系统集提供硬件服务,由位置服务、用户IAM、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。
(1)电源管理子系统提供以下功能:①重启服务:系统重启和下电;②系统电源管理服务:系统电源状态管理和休眠运行锁管理;③显示相关的能耗调节:包括根据环境光调节背光亮度和根据接近光调节亮灭屏;④省电模式:在不损害主要功能和性能的前提下,提供一种低功耗操作模式;⑤电池服务:支持充放电、电池和充电状态的监测,包括状态的更新和上报,还包括关机充电;⑥温控:在设备温度达到一定程度之后对应用、SoC、外围设备进行管控,限制温升;⑦耗电统计:主要包括软件耗电和硬件耗电统计,以及单个应用的耗电统计;⑧轻设备电池服务;⑨轻设备电源管理服务。
(2)网络管理子系统作为设备联网的必备组件,提供了对不同类型网络连接的统一管理,并提供了网络协议栈能力。应用可以通过调用API获取数据网络的连接信息、查询和订阅数据网络的连接状态等,并可通过网络协议栈进行数据传输。
各个部件的主要作用如下。
①基础网络连接管理部件:主要功能是提供基础网络连接管理和对应的JS/Native API,包括不同网络连接优先级管理、网络连接信息查询、网络连接状态变化、DNS解析及物理网络管理等。
②网络协议栈部件:主要功能是提供基础的网络协议栈和对应的JS API,包括HTTP/HTTPS、TCP、UDP等基础网络协议栈能力。网络管理子系统架构如图1-14所示。
图1-14 网络管理子系统架构
应用层包括系统应用和第三方非系统应用。应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成,其中,FA有UI界面,提供与用户交互的能力,而PA无UI界面,提供后台运行任务的能力及统一的数据访问抽象。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。
OpenHarmony应用层提供了一系列开发应用程序所需的基础组件和框架,包括图形化用户界面、多媒体应用、网络应用、安全与隐私保护等功能。其中,图形化用户界面提供了界面元素、控件、布局等基础组件,以及基于图形化引擎的渲染、动画、转场等视觉效果的支持,使开发者可以方便地构建各种应用的用户界面。多媒体应用提供了音视频播放、录制、编辑等基础功能的API和框架,同时还支持高清视频播放、虚拟现实、增强现实等新兴技术的应用。网络应用提供了HTTP、HTTPS、TCP/IP等协议的实现和封装,以及HTTP/WebSocket服务器和客户端的API和框架,方便开发者快速构建网络应用和服务。安全与隐私保护提供了多种安全机制和技术,包括安全通信、数据加密、访问控制等,以保护用户数据和隐私的安全性。此外,OpenHarmony还提供了丰富的开发工具和开发者文档,包括IDE、SDK、API文档等,以便开发者更加高效地开发应用程序。
所有系统支持的子系统,以及它们在此基础上分别支持的一些子系统如表1-4所示,轻量系统仅支持所有系统支持的子系统。
表1-4 所有系统支持的子系统
小型系统支持的子系统如表1-5所示。
表1-5 小型系统支持的子系统
标准系统支持的子系统如表1-6所示。
表1-6 标准系统支持的子系统