万物互联,万物鸿蒙
2020年9月10日,华为在2020华为开发者大会上发布了HarmonyOS(鸿蒙操作系统)2.0版本。随后网络上关于鸿蒙的各种解读与争论甚嚣尘上。最初,由于鸿蒙迟迟未能现身,不少网友嘲笑它是一个PPT系统。时间推移至2021年6月2日,华为正式发布HarmonyOS2及多款搭载HarmonyOS2的新产品,部分华为手机和设备可以直接升级至HarmonyOS2体验,然而鸿蒙代码释出后又被讥讽为套壳的Android,至此鸿蒙的热度再次燃爆全网。本文就带大家解读和认识下鸿蒙。
套壳Android?
鸿蒙其实并没有一个具体的概念,所以才会导致诸多的解读与争论,鸿蒙不仅是一个操作系统,更是一个生态。鸿蒙这个词在不同的场景下指代不同的东西。
在嵌入式领域,鸿蒙是一款嵌入式操作系统,鸿蒙的核心为LiteOS,系统只能在配套的硬件上运行,并非通用的操作系统,OpenHarmony是其对外开源的版本。
在非嵌入式领域,鸿蒙指的也就是被大家所熟知的手机操作系统,而争议最多的也就是这里。因为它方方面面里里外外都和Android有着千丝万缕的关系。
其实,鸿蒙的手机系统确实是基于AOSP(Android Open Source Project)项目开发而来,而且鸿蒙是完全遵循开源协议,无法律或政策风险,可以认为是不会被"卡脖子"的,其他家,小米、OV也是这么干的。但不同的是鸿蒙是基于Android10版本开发,并且鸿蒙并会随着Android版本升级而升级,小米、OV会继续随着Android版本迭代继续升级到Android11,12。如果概括一下:手机鸿蒙=原有的Android系统 - GMS(谷歌移动服务) + HMS(华为移动服务) + 分布式软总线 + 以Ability为核心的应用开发框架。
鸿蒙系统
万物鸿蒙和手机鸿蒙的统称,很容易让人迷惑,单看手机鸿蒙其实可以称之为一个操作系统。操作系统(operating system,简称OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机工作和资源分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统的最基本的系统软件。操作系统在整个计算架构中起着承上启下的作用:对上,支撑应用软件,协助应用软件调用计算、存储等软硬件资源;对下,操作系统的主要作用是控制计算、存储、网络和I/O设备。我们所熟悉的操作系统,PC端有Windows,Linux,Mac OS,移动端两大阵营:Android,iOS。目前市面上的这些操作系统,基于硬件的生态是相互割裂的,无论是手机、手表、电视还是车机,都有各自独立的生态。这些割裂的生态影响了用户体验。用户期望能够打破单个设备的生态孤岛,获得多设备之间的无缝连接体验。而鸿蒙的出发点正是为了解决这些问题,鸿蒙是一款面向万物互联时代的、全场景分布式操作系统。在传统的单设备系统能力基础上,鸿蒙提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,提供全场景(移动办公、运动健康、社交通信、媒体娱乐等)业务能力。
image.png
未来是一个万物互联的时代,鸿蒙操作系统面向的是1+8+N的全场景设备,能够根据不同硬件级别的设备进行弹性组装和适配,并且跨设备交互信息。1+8+N中的“1”指的是处于中间位置的手机,它是用户流量的核心入口。“8”指的是手机外围的8类设备,包括PC、平板电脑、智慧屏、耳机、眼镜、手表、车机、音响这8类设备在人们日常生活中的使用率仅次于手机。“N”指的是最外层的所有能够搭载鸿蒙操作系统的IoT( Internet of Things,物联网)设备,这些设备涵盖了各种各样的应用场景,包括运动健康、影音娱乐、智能家庭、移动办公、智慧出行等。针对运动健康这个场景,常见的设备有血压计、智能秤;针对移动办公这个场景,常见的设备有打印机、投影仪;针对智能家庭这个场景,常见的设备有扫地机器人、摄像头。
接下来本文将围绕着系统架构、技术特性、应用开发和生态发展这几方面对鸿蒙系统做出分析介绍。
系统架构
鸿蒙整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。HarmonyOS技术架构如下所示。
image.png
内核层
内核子系统:HarmonyOS采用多内核设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
驱动子系统:硬件驱动框架(HDF)是HarmonyOS硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。
系统服务层
系统服务层是HarmonyOS的核心能力集合,包括适用于各类设备的基础能力以及面向特定设备的专有能力,通过框架层对应用程序提供服务。该层包含以下几个部分:
系统基本能力子系统集:为分布式应用在多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全、AI等子系统组成。
基础软件服务子系统集:提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 等子系统组成。
增强软件服务子系统集:提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。
硬件服务子系统集:提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。
根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
框架层
框架层为HarmonyOS应用开发提供了Java/C/C++/JS等多语言的用户程序框架和Ability框架,两种UI框架(包括适用于Java语言的Java UI框架、适用于JS语言的JS UI框架),以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,HarmonyOS设备支持的API也会有所不同。
应用层
应用层支持基于框架层实现业务逻辑的原子化开发构建以FA/PA为基础组成单元的应用(包括系统应用和第三方应用)HarmonyOS的应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面(类似Android中的Activity),提供与用户交互的能力;而PA无UI界面(类似Android中的Service),提供后台运行任务的能力以及统一的数据访问抽象。FA在进行用户交互时所需的后台数据访问也需要由对应的PA提供支撑。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。
image.png
例如,一个视频通话应用,“视频通话主界面FA”提供UI界面以便于用户交互,“PA1”进行摄像头视频采集,“PA2”进行视频美颜处理,“PA3”提供超级夜景能力,FA/PA可以按需下载、加载和运行,基于FA/PA构建的新型应用生态能够实现三方服务跨设备智能分发,提供一致、高效的用户体验。仍以前面的视频通话应用为例,当手机下载该应用是,将同时拥有视频通话主界面FA、摄像头视频采集PA、视频美颜处理PA、超级夜视能力PA,当智慧屏下载该应用是,如果智慧屏不支持美颜、超级夜景,则会仅下载主界面FA、摄像头视频采集PA。
image.png
技术特性
鸿蒙系统的技术特性概括来说可以总结为三点:
- 硬件互助,资源共享
- 一次开发,多端部署
- 统一OS,弹性部署
其中后两者相对容易理解,本文主要介绍下最核心的第一点:硬件互助,资源共享。2021年的上海车展上,搭载了鸿蒙车机系统的极狐汽车上展示了这样一个场景:当驾驶员开车不方便接听手机上的视频通话时,可以把手机上的视频通话流转到车机上,用汽车上的摄像头扬声器进行视频通话。鸿蒙系统这种设备之间能够实现硬件互助、资源共享,依赖的关键技术包括分布式软总线、分布式设备虚拟化、分布式数据管理、分布式任务调度等。
分布式软总线
总线(Bus)是由物理导线组成的传输线束,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。
传统的设备是由设备内部的上述“硬总线”连在一起的,如果想让多个设备之间分布式地通信和共享数据,并让多个设备融合为一体,仅仅通过硬总线是很难实现的。分布式软总线是实现分布式能力的基础,是多种终端设备的统一基座,它为设备之间的互联互通提供了统一的分布式通信能力,能够快速发现并连接设备,以及高效地分发任务和传输数据。分布式软总线融合了近场和远场的通信技术,承担了任务总线、数据总线和总线中枢三大功能。其中,任务总线负责将应用程序在多个终端上快速分发;数据总线负责数据在设备间的高性能分发和同步;总线中枢起到协调控制的作用,用于自动发现并组网,以及维护设备间的拓扑关系。目前分布式软总线的性能已经无限逼近硬总线的能力,已经达到1.8G的带宽、10毫秒延迟、35%的抗丢包率。
image.png
总结一下,分布式软总线是手机、平板、智能穿戴、智慧屏、车机等分布式设备的通信基座,为设备之间的互联互通提供了统一的分布式通信能力,为设备之间的无感发现和零等待传输创造了条件。开发者只需聚焦于业务逻辑的实现,无需关注组网方式与底层协议。更形象一点可以理解传统的硬总线就好比电脑通过网线连接到路由器上进行网络连接,而软总线就好比通过wifi进行网络连接。
分布式设备虚拟化
分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理、数据处理,多种设备共同形成一个超级虚拟终端。针对不同类型的任务,为用户匹配并选择能力合适的执行硬件,让业务连续地在不同设备间流转,充分发挥不同设备的能力优势,如显示能力、摄像能力、音频能力、交互能力以及传感器能力等。
比如,手机摄像头必须要安装在手机上,因而摄像头不能做的很大。有了软总线技术后,把摄像头“拆下来”呢?智能手机只承担核心的计算、存储、显示、交互功能,其他功能通过各种专用设备实现,然后通过软总线将专用设备与手机连接起来,这些专用设备就像“装在手机里”一样,成了手机的子部件。这种情况下,手机摄像头就解除了物理限制,可以把像素做的很高,甚至与单反相机媲美(事实上,可以直接将单反相机与手机连接起来)。
image.png
场景举例:在做家务时接听视频电话,可以将手机与智慧屏连接,并将智慧屏的屏幕、摄像头与音箱虚拟化为本地资源,替代手机自身的屏幕、摄像头、听筒与扬声器,实现一边做家务、一边通过智慧屏和音箱来视频通话。简单来说分布式设备虚拟化就是用来消除终端设备之间的割裂,模糊硬件之间的边界的。
分布式数据管理
分布式数据管理基于分布式软总线的能力,实现应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,跨设备的数据处理如同本地数据处理一样方便快捷,让开发者能够轻松实现全场景、多设备下的数据存储、共享和访问,为打造一致、流畅的用户体验创造了基础条件。
分布式的数据管理让跨设备数据处理如同本地处理一样方便快捷。在鸿蒙操作系统的分布式数据管理能力的加持下,叠加上华为5G通信技术的增益下,硬件设备之间的界限将变得越来越模糊,一个设备可能会成为另外一个设备的子部件,或者多个设备成为一个整体设备,从而实现数据共享、算力共享、AI共享。
image.png
场景举例:将手机上的文档投屏到智慧屏,在智慧屏上对文档执行翻页、缩放、涂鸦等操作,文档的最新状态可以在手机上同步显示并保存。
分布式任务调度
分布式任务调度基于分布式软总线、分布式数据管理、分布式Profile等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况,以及用户的习惯和意图,选择合适的设备运行分布式任务。
image.png
场景举例:如果用户驾车出行,上车前,在手机上规划好导航路线;上车后,导航自动迁移到车机和车载音箱;下车后,导航自动迁移回手机。如果用户骑车出行,在手机上规划好导航路线,骑行时手表可以进行导航。
应用开发
作为移动应用开发者,还是比较关心鸿蒙的应用开发流程以及Android平台的应用在鸿蒙上的表现情况。目前鸿蒙系统上的手机App有以下三种表现形式:
- 原生Android应用,无需做任何改变。
- 原生Android,接入部分鸿蒙新特性服务,代表:京东 优酷视频
- 鸿蒙原生应用。图标右下角有HMOS标志。代表:微博,新浪新闻。
第一种App形态不用多做解释,正如鸿蒙宣传的那样,全面兼容Android,所以Android平台的App在鸿蒙上运行是完全没有问题的。当然这也就引发了本文开头所说的鸿蒙到底是不是Android套壳的争论。
第二种App形态,是一种折中的方式。如果将整个App鸿蒙化,工作量是比较庞大的,那么有么有一种方式技能利用鸿蒙的特性也能快速适配呢,答案是有的,那就是混合包开发模式,整个App基本上没有大的修改,只需要依赖鸿蒙兼容包新增鸿蒙相关模块用来实现鸿蒙相关特性即可。当然整体的工程结构,打包签名上架等一系列流程也要做出配套的调整与兼容。详细的改造方式不再赘述。
image.png
第三种App形态,也就是鸿蒙的原生应用开发。如下图的新浪微博,墨迹天气等原生鸿蒙应用,在App icon的右下角有HMOS字样。
image.png
开发环境搭建
华为官方的鸿蒙应用开发和设备开发的IDE都是DevEco Studio, DevEco Studio是基于开源的intellij改造的,IDE可以在鸿蒙官网下载,下载地址是:https://developer.harmonyos.com/cn/develop/deveco-studio. 目前支持Windows和Mac系统,下载完成后基本一路Next就行了,环境搭建比较友好。
鸿蒙应用UI框架有两套,支持Java、JS,IDE里有默认的模板。这两套框架的区别是,Java框架只支持鸿蒙Android系统,鸿蒙虽然定义了一套应用开发的DSL,但绘制部分还是用Android的UI控件来承载,非自绘UI。JS应用既支持鸿蒙Android系统,也支持鸿蒙嵌入式系统。鸿蒙JS应用在鸿蒙Android上是套了个Android应用的壳,这个壳会构建一个类似小程序的渲染环境,转换为Android的原生控件渲染,类似ReactNative的控件转换,ReactNative采用的是React的语法,而鸿蒙Android采用的是Vue的语法。JS应用相比Java应用,在排版能力,扩展性,兼容性方面存在一定的局限性,更适合做信息展示类的应用。对应的SDK也有Java和JS两套,鸿蒙系统提供的名为Ability的应用框架也分别有Java和JS的实现。应用支持哪些设备,可以在应用的config.json中声明。
工程创建
工程创建过程中可以根据实际需要选择Java模板或者Js模板,不同的模板所支持的应用类型也有差异,如下图的Java模板支持手机,平板,智慧屏,手表和车机系统。
image.png
选完模板填完应用信息后还可以勾选设备类型,整体流程与Android工程创建流程类似,Android开发者并不会感到陌生。
image.png
创建完工程后打开项目目录,这个工程结构对于Android开发者来说可是太熟悉了,还是熟悉的配方,还是原来的味道。
image.png
应用程序安装包
鸿蒙的应用安装包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)以及描述每个HAP属性的pack.info组成。HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开。
一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包,可分为entry和feature两种模块类型,如下图所示。
entry:应用的主模块。一个APP中,对于同一设备类型必须有且只有一个entry类型的HAP,可独立安装运行。
feature:应用的动态特性模块。一个APP可以包含一个或多个feature类型的HAP,也可以不含。只有包含Ability的HAP才能够独立运行。
image.png
2021年6月2日华为正式发布HarmonyOS2及多款搭载HarmonyOS2的新产品。好饭不怕晚,大半年之后华为总算是端出了一道色香味都还可以的菜。通过上面对于鸿蒙系统的系统架构、技术特性、应用开发几个维度的分介绍分分析,可以总结下鸿蒙在AOSP基础上到底做了哪些事呢?
1、定义了以Ability为核心的应用开发框架,使其可以屏蔽不同操作系统的差异,使开发的代码可以在不同操作系统中运行。在HarmonyOS之前,与之类似的技术且比较成功的有小程序以及Flutter,它们三者之间的区别:
小程序:运行在各自App环境内部。
Flutter:致力于移动端、桌面端、Web、嵌入式全覆盖。
Ability:主要为华为生态中的手机以及嵌入式设备设计。
虽然它们各自的所追求的目标不同,但它们设计思想都是类似的:统一UI,屏蔽系统差异。
2、定义了一个以「分布式软总线」为名的自有RPC协议框架,以此RPC协议为基础封装了一系列常用的API,屏蔽了设备之间的繁琐、多种多样、差异很大的通讯方式,提供了稳定、统一、可靠的近场通讯协议。
手机鸿蒙的本质=Android系统 - GMS + HMS + 分布式软总线 + 以Ability为核心的应用开发框架。
鸿蒙生态
关于鸿蒙到底是不是套壳Android这件事,想必每个人心中都有自己的答案。你说它是“自主的全场景分布式系统”吧,它确实是从Android发展来的,而且底层代码还是Android;但是你说是“Android套壳”吧,它确实又有一些明显区别于Android的特色性差异。但套壳不套壳真的那么重要吗?作为开发者其实是很厌恶重复造轮子的,AOSP这么好的轮子拿来用又有什么问题,重要的是能造出更好的车,重要的是打造出更完善的生态体系。
华为的野心绝不止是嵌入式系统或者手机系统,华为是要打造一个万物互联的鸿蒙生态,虽然现在它只有手机系统,嵌入式系统,设想未来会有鸿蒙其他的系统或者是SDK等植入其它厂商的设备,使这些设备也具备运行鸿蒙应用的能力,甚至是运行在Windows、Linux上的设备,那么这些设备也可以说是一个鸿蒙设备,是鸿蒙生态的一部分。所谓万物互联,万物鸿蒙。纵观移动互联网发展史会发现,重要的从来都不是技术的好坏和系统的优劣。遥想当年Plam的WebOS,诺基亚的MeeGO,微软WinPhone无论是用户体验还是系统架构都不逊于Android,但最终不还是被Android一一斩落马下。这其中最关键的致胜因素是生态,目前手机系统的两大霸主Android,iOS得以十数年长青,正是得益于建立了以自己操作系统为核心的优良生态圈。
任正非经常说:“人的一生太顺利也许是灾难,如果你回过头来注意看,就会发现你受的挫折,往往是福不是祸。烧不死的鸟是凤凰,从泥坑里爬出的是圣人。”华为从被美国盯上的那一天起,就注定要经历灾难。现在,历经10年磨剑的鸿蒙系统,终于揭开了面纱,它最终能不能凤凰涅槃,还得拭目以待,但至少,时代的风口是在的。过去40年,相继经历了电脑时代、智能手机时代,IT领域的高壁垒特性,决定了要想颠覆“前任”,新赛道就是绝佳的机会,也可能是唯一的机会。苹果能够颠覆诺基亚,有赖于智能手机时代的出现,安卓能够颠覆微软的操作系统帝国,同样有赖于智能手机时代的出现。现在,IoT时代正徐徐拉开帷幕,这是一个全新的时代,这是一个万物互联的时代,这是鸿蒙的时代。
“鸿蒙”两字,寓意开天辟地,而华为鸿蒙所干的,正是为中国软件行业开天辟地。
为山者,基于一篑之土,以成千丈之峭。
凿井者,起于三寸之坎,以就万仞之深。