第1章 鸿蒙概述
鸿蒙操作系统是华为自主研发的,2012年华为开始组建团队研发鸿蒙操作系统,并于2019年8月9日在华为开发者大会上正式发布了鸿蒙操作系统,即HarmonyOS 1.0。
鸿蒙操作系统让国内手机厂商开始真正重视研发。现在的国产手机厂商在软硬件方面的经验越来越丰富,很多品牌在国外市场的份额也越来越多。
1.1 鸿蒙的背景
自华为推出了主打物联网的鸿蒙操作系统之后,目前有超出6万款应用软件加入鸿蒙操作系统。下面是鸿蒙操作系统历史版本的汇总。
1.HarmonyOS 1.0
2019年8月9日,华为在东莞举行华为开发者大会,正式发布操作系统HarmonyOS。HarmonyOS是一款全场景分布式OS,可按需扩展,实现更广泛的系统安全,主要用于物联网,特点是低时延。HarmonyOS实现了模块化耦合,对应不同设备可弹性部署,它有三层架构:第一层是内核,第二层是基础服务,第三层是程序框架。2019年8月10日,荣耀正式发布荣耀智慧屏、荣耀智慧屏Pro,搭载了鸿蒙操作系统。
2.HarmonyOS 2.0
HarmonyOS 2.0是华为基于开源项目OpenHarmony 2.0开发的面向多种全场景智能设备的商用版本。Harmony2.0系统部分界面如图1-1所示。
2020年9月10日,HarmonyOS升级至2.0版本,在关键的分布式软总线、分布式数据管理、分布式安全等分布式能力上进行了全面升级,为开发者提供了完整的分布式设备与应用开发生态。2020年,华为已与美的、九阳、老板等家电厂商达成合作,这些品牌将发布搭载Harmony的全新家电产品。
手机HarmonyOS 2.0在2020年12月18日开放Beta测试版本,2021年1月份面向部分手机用户提供升级渠道。12月17日,华为官方团队发布公告,HarmonyOS 2.0提前完成所有既定产品的正式版本上线,并且已有上百款华为、荣耀设备升级到了鸿蒙HarmonyOS 2.0正式版。
•图1-1 Harmony 2.0系统部分界面
2022年4月,HarmonyOS原生版迎来了2.0大版本,加入了圈子功能。
3.HarmonyOS 3.0
2021年10月,HarmonyOS 3.0的更新日志被曝光。HarmonyOS 3.0的更新包容量约为2.98GB,优化了控制中心的界面显示,新增提升游戏流畅度的GameServiceKit;加入了安全补丁,使得系统安全得到了进一步的增强;系统方面,桌面图标可以调节大小了,并且优化了免打扰功能和重新设计通知栏;地图也将支持三维城市体验;系统的稳定性也相应得到了增强。
当前,开发者相关配套的开发工具及线上模拟器均已经升级为3.0 beta版本,本书也是基于鸿蒙3.0编写的。
1.1.1 鸿蒙名字的由来及意义
鸿蒙,是一个汉语词语,亦作“鸿濛”。传说在盘古开天辟地之前,世界是一团混沌状,因此人们把那个时代称作鸿蒙时代,后来该词也常被用来泛指远古时代。华为团队选择这一具有中国特色的名字,可见其远大抱负。
而现在鸿蒙又多了一层意思,特指华为鸿蒙操作系统(HarmonyOS)。
Harmony是基于鸿蒙汉字的音译,在英文解释里,Harmony有和谐、融合之意,这正好也对应了华为对于鸿蒙操作系统万物互联、多设备相互融合的定位。
为了方便大家阅读,后面我们尽可能地使用“鸿蒙”一词来指代鸿蒙操作系统。
1.1.2 鸿蒙与Android的关系
鸿蒙操作系统可以完美兼容Android(安卓)的应用程序,很多人会产生一些疑惑,鸿蒙与Android有哪些相同之处,又有哪些不同之处呢?要想完全搞明白,就需要对操作系统有一些正确的认识。
1.什么是操作系统?
操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供了一个让用户与系统交互操作的界面。
操作系统由下列五大部分组成。
1)内核:操作系统的内核部分通常运行在最高特权级,负责提供基础性、结构性的功能。
2)驱动程序:最底层的、直接控制和监视各类硬件的部分。它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。
3)接口库:一系列特殊的程序库。它们的职责在于把系统提供的基本服务包装成应用程序所能够使用的编程接口(API),这是最靠近应用程序的部分。
4)桌面环境:这个部分就是大家经常接触的操作系统界面,也就是普通用户对于操作系统最直观的感受。
5)应用程序:用户可自行选择基于操作系统开发的应用程序进行安装,以完成特定的功能,比如QQ、360杀毒软件等。
其实开发一款操作系统并不是什么难事,很多计算机专业学生的毕业设计就是开发一款操作系统。运行在操作系统之上的形态万千的各种应用软件,才是决定操作系统能否被大众所接受的根本条件。
历史上出现过很多从零开始编写的操作系统,由于开发者或者相关社区能力有限,大多都已经淹没在历史的长河中了。根据部署设备以及应用场景的不同,操作系统有以下分类。
1)桌面端:Windows、macOS、Ubuntu等。
2)服务端:Windows Server、macOS Server、CentOS等。
3)移动端:iOS、Android、鸿蒙、塞班等。
严格意义上来讲,操作系统指的是操作系统内核,大家看到的以上这些操作系统都是基于内核进行开发的。
目前世界上三大操作系统内核分别是Window NT、UNIX和Linux,基于内核设计出来的操作系统称为操作系统发行版、比如Windows 11是Windows NT的发行版,FreeBsd是UNIX的发行版,Ubuntu、Andorid是Linux的发行版。
2.各个操作系统可以互相兼容
操作系统之间是可以互相兼容应用的,只需要提供对应的程序开发库即可。经常浏览科技资讯的读者应该知道,在Windows11上也可以运行Android的应用程序。
iOS是基于macOS开发的操作系统,而macOS是基于UNIX的发行版FreeBSD演化而来的,同类型操作系统之间兼容应用就更为容易了。
现代操作系统,就像是目前手机行业一样,也可以采购各种零部件进行组装,这些零部件既可以自己研发,也可以用别人的。在软件行业,很多东西是开源的,它不一定属于某个公司,而是属于整个开源社区,大家都可以拿来为个人所用。
3.AOSP
鸿蒙和Android因为一项被称为AOSP(Android Open Source Project,Android开放源代码项目)的项目变得有一定关系,这个项目正是操作系统接口库这个级别的技术,任何操作系统只要集成这个接口库,其上面就可以运行Android的应用程序了。比如,Windows11集成了AOSP之后,就可以运行Android应用程序了。
4.鸿蒙不是Android套壳
结合上面的内容可知,鸿蒙其实是基于Linux内核设计的一款可以兼容Android应用的全新操作系统。即将进入的物联网时代,特别需要一款可以实现万物互联的操作系统,而鸿蒙就是这样一款划时代的操作系统。
作为开发者,请读者跟着本书编者,一起进入鸿蒙应用开发的世界吧!
1.1.3 鸿蒙是如何开源的
2020年9月10日,华为在全球开发者大会上正式提出,把OpenHarmony捐献给开放原子开源基金会(Open Atom Foundation),由全球开发者共同构建。
OpenHarmony是由开放原子开源基金会孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。
OpenHarmony与HarmonyOS的关系
其实,OpenHarmony才是华为历时多年研发的正牌操作系统,HarmonyOS算是OpenHarmony的发行版,就跟Android与MIUI、ColorOS等系统关系一样。
OpenHarmony本身并不集成AOSP,所以在OpenHarmony设备上是无法运行Android程序的。
1.1.4 鸿蒙生态的构成
在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板电脑、智能穿戴、智慧屏、车机等多种终端设备,提供全场景(移动办公、运动健康、社交通信、媒体娱乐等)业务能力。华为官方把这套生态称为“1+8+N”生态,如图1-2所示。
•图1-2 华为“1+8+N”生态
1.2 鸿蒙的分布式处理特性
鸿蒙是一款分布式的操作系统,多种设备之间能够实现硬件互助、资源共享,依赖的关键技术包括分布式软总线、分布式设备虚拟化、分布式数据管理和分布式任务调度等。
1.2.1 分布式技术的应用
在鸿蒙操作系统中,结合四大分布式特性,可以构建如下的分布式场景搭建。
1.分布式软总线
分布式软总线是手机、平板、智能穿戴、智慧屏、车机等分布式设备的通信基座,为设备之间的互联互通提供了统一的分布式通信能力,也为设备之间的无感发现和零等待传输创造了条件。开发者只需聚焦于业务逻辑的实现,不用关注组网方式与底层协议,分布式软总线架构如图1-3所示。
•图1-3 分布式软总线架构
典型应用场景举例如下。
1)智能家居场景:在烹饪时,手机可以通过碰一碰与烤箱连接,并自动按照菜谱设置烹调参数,控制烤箱制作菜肴。与此类似,料理机、油烟机、空气净化器、空调、灯和窗帘等都可以在手机端显示并通过手机控制。设备之间即连即用,不用进行烦琐的配置。
2)多屏联动课堂:老师通过智慧屏授课,与学生开展互动,营造课堂氛围;学生通过平板电脑完成课程学习和随堂问答。统一、全连接的逻辑网络确保了传输通道的高带宽、低时延、高可靠。
2.分布式设备虚拟化
分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理和数据处理,多种设备共同形成了一个超级虚拟终端。针对不同类型的任务,为用户匹配并选择能力合适的执行硬件,让业务连续在不同设备间流转,充分发挥不同设备的能力优势,如显示能力、摄像能力、音频能力、交互能力以及传感器能力等。分布式设备虚拟化架构如图1-4所示。
•图1-4 分布式设备虚拟化示意图
典型应用场景举例如下。
1)视频通话场景:在做家务时接听视频电话时,可以将手机与智慧屏连接,并将智慧屏的屏幕、摄像头与音箱虚拟化为本地资源,替代手机自身的屏幕、摄像头、听筒与扬声器,实现一边做家务、一边通过智慧屏和音箱来视频通话的功能。
2)游戏场景:在智慧屏上玩游戏时,可以将手机虚拟化为遥控器,借助手机的重力传感器、加速度传感器、触控能力,为玩家提供更便捷、更流畅的游戏体验。
3.分布式数据管理
分布式数据管理基于分布式软总线的能力,实现应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,跨设备的数据处理如同本地数据处理一样方便快捷,让开发者能够轻松实现全场景、多设备的数据存储、共享和访问,为打造一致、流畅的用户体验创造了基础条件。分布式数据管理架构如图1-5所示。
•图1-5 分布式数据管理示意图
典型应用场景举例如下。
1)协同办公场景:将手机上的文档投屏到智慧屏,在智慧屏上对文档执行翻页、缩放和涂鸦等操作,文档的最新状态也可以在手机上同步显示。
2)照片分享场景:出游时,使用手机拍摄的照片,可以在登录了同账号的其他设备(比如平板电脑)上浏览、收藏、保存或编辑,也可以通过家中的智慧屏同家人一起分享记录下的快乐瞬间。
4.分布式任务调度
分布式任务调度基于分布式软总线、分布式数据管理、分布式Profile等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况,以及用户的习惯和意图,选择合适的设备运行分布式任务。分布式任务调度架构如图1-6所示。
典型应用场景举例如下。
1)导航场景:如果用户驾车出行,上车前,在手机上规划好导航路线。上车后,导航自动迁移到车机和车载音箱。下车后,导航自动迁移回手机;如果用户骑车出行,在手机上规划好导航路线,骑行时手表可以接续手机进行导航。
2)外卖场景:在手机上点外卖后,可以将订单信息迁移到手表上,随时查看外卖的配送状态。
•图1-6 分布式任务调度示意图
1.2.2 一次开发多设备支持
HarmonyOS提供了用户程序框架、Ability框架以及UI框架,支持应用开发过程中多终端的业务逻辑和界面逻辑进行复用,能够实现应用的一次开发、多端部署,提升了跨设备应用的开发效率。多设备支持架构如图1-7所示。
•图1-7 多设备支持
HarmonyOS通过组件化和小型化等设计方法,支持多种终端设备按需弹性部署,能够适配不同类别的硬件资源和功能需求。支撑通过编译链关系去自动生成组件化的依赖关系,形成组件树依赖图,支撑产品系统的便捷开发,降低硬件设备的开发门槛。
1)支持各组件的选择(组件可有可无):根据硬件的形态和需求,可以选择所需的组件。
2)支持组件内功能集的配置(组件可大可小):根据硬件的资源情况和功能需求,可以选择配置组件中的功能集。例如,选择配置图形框架组件中的部分控件。
3)支持组件间依赖的关联(平台可大可小):根据编译链关系,可以自动生成组件化的依赖关系。例如,选择图形框架组件,将会自动选择依赖的图形引擎组件等。
本书第2篇中的“跳动计划(Todo类软件)”实战案例支持手机、手表、平板电脑等设备,其中大量的组件可以实现复用。
1.2.3 跨设备流转功能
跨设备流转允许鸿蒙设备把当前正在进行的应用一键转移到其他设备上继续运行,甚至不需要另一台设备安装该应用。
开发者可以通过简单的几行代码,在应用中添加跨设备流转功能。
跨设备流转是鸿蒙2.0.0.219中的一个重大更新,目前仅支持部分手机和平板电脑,后续将会支持更多的设备,如图1-8所示。
•图1-8 跨设备流转功能演示
1.2.4 原子化应用
鸿蒙支持开发不需要安装就可以运行的应用,即原子化应用。
华为在多年前就联合国内OPPO、vivo等手机厂商,发布了快应用开发平台,现在的原子化应用更像是对快应用的一个延伸,加入了更多分布式特性来支持。
原子化服务基于HarmonyOS API开发,支持运行在“1+8+N”设备上,供用户在合适的场景、合适的设备上便捷使用。相对于传统方式,原子化服务需要安装的应用形态更加轻量,同时提供了更丰富的入口和更精准的分发。
1.3 鸿蒙的整体架构设计理念
鸿蒙不仅仅开发了一个可运行软件的操作系统,而且结合人机交互、用户交互界面等做出了统一的标准,以及留下了供开发者、设计师自由定制的接口。
1.3.1 系统架构设计
HarmonyOS整体遵从分层设计,从下向上依次为内核层、系统服务层、框架层和应用层。系统功能按照“系统>子系统>功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。HarmonyOS系统架构如图1-9所示。
•图1-9 鸿蒙系统架构图
1.内核层
内核层分为内核子系统和驱动子系统。
1)内核子系统:HarmonyOS采用多内核设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(Kernel Abstract Layer, KAL)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
2)驱动子系统:硬件驱动框架(HDF)是HarmonyOS硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。
2.系统服务层
系统服务层是HarmonyOS的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分。
1)系统基本能力子系统集:为分布式应用在HarmonyOS多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、公共基础库、多模输入、图形、安全和AI等子系统组成。其中,方舟多语言运行时提供了C/C++/JS等多语言运行时和基础的系统类库,也为使用方舟编译器静态化的Java程序(即应用程序或框架层中使用Java语言开发的部分)提供运行时。
2)基础软件服务子系统集:为HarmonyOS提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X)和MSDP&DV等子系统组成。
3)增强软件服务子系统集:为HarmonyOS提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务和IoT专有业务等子系统组成。
4)硬件服务子系统集:为HarmonyOS提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务和IoT专有硬件服务等子系统组成。
根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集和硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
3.框架层
框架层为HarmonyOS应用开发提供了Java/C/C++/JS/TS等多语言的用户程序框架和Ability框架,两种UI框架(包括适用于Java语言的Java UI框架、适用于JS/TS语言的方舟开发框架),以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,HarmonyOS设备支持的API也会有所不同。
4.应用层
应用层包括系统应用和第三方非系统应用。HarmonyOS的应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。FA在进行用户交互时所需的后台数据访问也需要由对应的PA提供支撑。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致和高效的应用体验。
1.3.2 鸿蒙的人机交互设计理念
在全场景的数字体验中,越来越多类型的智能终端设备分布在用户的日常生活中,可交互的用户界面广泛存在于智能手机、平板电脑、PC、智能穿戴、电视、车机、虚拟现实(VR)和增强现实(AR)等设备上。应用可能在多种设备上运行或在单一设备上被用户通过多种输入方式操控,这需要其用户界面能够自动识别和支持不同的输入方式,以便用户以习惯的、舒适的方式与其进行交互,如图1-10所示。
•图1-10 注重人机交互理念
在全场景的人机交互方面,HarmonyOS的核心思想是根据用户的状态,提供符合当前状态的交互方式,保证用户交互体验的一致性。例如,当应用运行在触屏设备上时,用户可以通过手指长按打开上下文菜单;当应用运行在PC上时,用户则可以通过单击鼠标右键打开该菜单。
典型的输入方式包括但不限于触屏上手指/手写笔等直接交互、鼠标/触摸板/键盘/表冠/遥控器/车机摇杆/旋钮/手柄/隔空手势等间接交互,以及语音交互。
设计和开发应用时,设计师和开发者应考虑到应用具有使用多种输入方式的可能性,并实现相应的功能,保证在当前输入方式下应用能够以正确的、符合用户习惯的方式进行响应。
1.3.3 鸿蒙App界面的设计理念
HarmonyOS是面向未来全场景智慧生活方式的分布式操作系统。对消费者而言,HarmonyOS将生活场景中的各类终端进行能力整合,形成One Super Device,以实现不同终端设备之间的极速连接、多端协同和资源共享,匹配合适的设备并提供流畅的全场景体验。
分布式设计指南可以帮助应用开发者了解如何充分发挥One Super Device的能力,提供独特的跨设备交互体验。
想构建优秀的分布式体验,需要遵循如下设计原则。
1.体验增值
简单叠加更多的设备并不能带来更好的体验,反而可能造成体验下降。要谨慎地设计分布式体验,跨设备交互要能提供明显的体验提升,例如更好的感官体验和交互效率等。
2.无缝流畅
从一个设备流转到另一个设备的过程是流畅的,设备与设备的协同是无缝的,就像是在使用一台设备一样,例如用户通过智能推荐可以一步把界面内容流转到其他设备。
3.清晰明确
跨设备交互是新的使用体验,用户可能没有预期,交互的指引要清晰明确,可以帮助用户快速了解和学习跨设备交互的使用,例如提供明确的图标或推荐。
4.易于理解
跨设备交互应该是易于理解和记忆的,方便用户长期持续地使用,即使用户没有用过某个分布式的功能,在根据操作指引使用之后应该能够很容易地理解操作流程,记住操作步骤。
5.用户可控
在跨设备交互时,用户要能够随时切换到其他设备或其他可用的跨设备交互模式,例如用户把视频流转到智慧屏设备后,也可以随时切换到其他可用的设备。
6.沉浸无干扰
更多的设备为沉浸式体验提供了更多可能,考虑根据设备的属性在不同设备上分配信息,最大化提供沉浸无干扰的体验,例如在手机上浏览邮件列表,在智慧屏上查看选中的邮件详情。
全场景统一设计架构演示界面如图1-11所示。
•图1-11 全场景统一设计架构
1.3.4 App UI界面的设计标准
鸿蒙对于UI界面的设计也是制定了一系列的标准,设计师和开发者在开发的过程中,应尽可能地遵循以下设计规范,保证沉浸式系统体验。
1.单位
虚拟像素(virtual pixel, vp)是一台设备针对应用而言所具有的虚拟尺寸(区别于屏幕硬件本身的像素单位)。它提供了一种灵活的方式来适应不同屏幕密度的显示效果。
鸿蒙也支持传统的px(像素)单位,新手可以直接使用px为单位,后续都应该转向使用vp单位。
2.色彩
鸿蒙的主品牌色采用蓝色的设计,在一个当前页面显著的位置(比如按钮)进行的操作,应尽可能地使用蓝色,如图1-12所示。
•图1-12 鸿蒙品牌色颜色取值参考
HarmonyOS设计了浅色、深色、半透明三种不同的主题样式,设备和应用可以选择合适的主题风格来呈现界面,如图1-13所示。
•图1-13 鸿蒙主题样式参考
在进行UI界面设计时,应尽可能地遵循以下几点原则。
1)手机建议主要以浅色主题为主,其他主题为辅。当用户有需要的时候,也可开启深色模式将浅色主题的应用界面切换为深色主题样式。
2)智慧屏的使用场景较为固定,多为室内观看,所以大屏主题风格选择了深色主题。
3)智能穿戴设备采用深色主题,可以为穿戴设备降低电量消耗。
3.字体
通过研究用户在不同场景下对多终端设备的阅读反馈,综合考量不同设备的尺寸、使用场景等因素,同时也考虑用户使用设备时因视距、视角的差异带来的字体大小和字重的不同诉求,HarmonyOS设计了全新系统默认的字体——HarmonyOS Sans,如图1-14所示。
•图1-14 鸿蒙内置字体设计参考
4.图标
鸿蒙内置了大量的图标供设计师、开发者使用,即使不选用内置的图标,也应尽可能遵循鸿蒙图标的设计规范,如图1-15所示。
•图1-15 鸿蒙图标设计规范
5.插画
为了更好地帮助用户理解当前操作,鸿蒙建议开发者添加更多插画来进行相关说明,如图1-16所示。
•图1-16 鸿蒙插画设计参考图
6.布局
尽可能地使用栅格系统进行布局,特别是针对跨设备运行的应用,可以极大地提高开发效率,如图1-17所示。
•图1-17 栅格系统参考图