2019年8月9日,华为在东莞举行华为开发者大会,正式发布鸿蒙操作系统;2020年9月推出了鸿蒙2.0,全面使能全场景生态,具备跨设备、服务流转、极速直达、可视可说、隐私安全五大能力。在2021年6月2日的华为新品发布会中,鸿蒙手机操作系统正式登场,引起社会媒体的广泛关注,同时也掀起了国内更新鸿蒙操作系统和学习鸿蒙开发的浪潮。
本文主要介绍鸿蒙操作系统开发入门,从鸿蒙操作系统特征、技术架构、技术特性等方面介绍什么是鸿蒙操作系统。开发方面介绍了开发环境搭建、创建鸿蒙应用、部署鸿蒙应用到模拟器。
01
鸿蒙系统概述
传说中国神话的远古时代,在盘古昆仑山开天辟地之前,世界是一团混沌的元气,这种自然的元气叫作鸿蒙,因此人们把那个时代称作鸿蒙时代,后来该词也常被用来泛指远古时代。2019年8月9日,华为在东莞举行华为开发者大会,正式发布鸿蒙操作系统(HarmonyOS或HongmengOS)。根据官方的定义,鸿蒙系统是一款面向未来、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。
分析
鸿蒙操作系统与Android/ target=_blank class=infotextkey>安卓操作系统比较相似,但也具有自身的优势。本节主要从系统特征、技术架构和技术特性等方面来分析鸿蒙操作系统。
1
●鸿蒙操作系统特征
华为鸿蒙操作系统的优点是流畅度较高,跨平台适用。这套系统主要是基于微内核的全场景分布式操作系统,可以按照需要进行扩展,由此来实现更为广泛的系统的安全性。它的主要特点是很低的时延,甚至可到毫秒级乃至亚毫秒级。在传统的单设备系统能力的基础上,鸿蒙操作系统提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。
鸿蒙操作系统具有以下三大特征。
(1) 搭载该操作系统的设备在系统层面融为一体,形成超级终端,让设备的硬件能力可以弹性扩展,实现设备之间硬件互助,资源共享。
对消费者而言,鸿蒙操作系统能够将生活场景中的各类终端进行能力整合,实现不同终端设备之间的快速连接、能力互助、资源共享,匹配合适的设备,提供流畅的全场景体验。
(2) 面向开发者,实现一次开发,多端部署。
对应用开发者而言,鸿蒙操作系统采用了多种分布式技术,使应用开发与不同终端设备的形态差异无关,从而让开发者能够聚焦上层业务逻辑,更加便捷、高效地开发应用。
(3) 一套操作系统可以满足不同能力的设备需求,实现统一操作系统,弹性部署。
对设备开发者而言,鸿蒙操作系统采用了组件化的设计方案,可根据设备的资源能力和业务特征灵活裁剪,满足不同形态终端设备对操作系统的要求。
鸿蒙操作系统提供了支持多种开发语言的API,供开发者进行应用开发。支持的开发语言包括JAVA、XML(Extensible Markup Language)、C/C++、JS(JavaScript)、css(Cascading Style Sheets)和HML(HarmongOS Markup Language)。
2
●鸿蒙操作系统技术架构
鸿蒙操作系统整体遵从分层设计,从下向上依次为: 内核层、系统服务层、应用框架层和应用层。系统功能按照“系统→子系统→功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。鸿蒙操作系统技术架构如图10-1所示。
■ 图10-1鸿蒙操作系统技术架构
1. 内核层
(1) 内核子系统。鸿蒙操作系统采用多内核设计,支持针对不同资源受限设备选用适合的操作系统内核。内核抽象层(Kernel Abstract Layer,KAL)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
(2) 驱动子系统。鸿蒙操作系统驱动框架(HDF)是鸿蒙操作系统硬件生态开放的基础,提供 统一外设访问能力和驱动开发、管理框架。
2. 系统服务层
系统服务层是鸿蒙操作系统的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分。
(1) 系统基本能力子系统集: 为分布式应用在鸿蒙操作系统多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、公共基础库、多模输入、图形、安全、AI等子系统组成。其中,方舟运行时子系统提供了C/C++/JS多语言运行时和基础的系统类库,也为使用方舟编译器静态化的Java程序(即应用程序或框架层中使用Java语言开发的部分)提供运行时。
(2) 基础软件服务子系统集: 为鸿蒙操作系统提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX、MSDP&DV 等子系统组成。
(3) 增强软件服务子系统集: 为鸿蒙操作系统提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT 专有业务等子系统组成。
(4) 硬件服务子系统集: 为鸿蒙操作系统提供硬件服务,由位置服务、生物特征识别、穿戴专 有硬件服务、IoT专有硬件服务等子系统组成。
根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
3. 应用框架层
应用框架层为鸿蒙操作系统的应用程序提供了 Java/C/C++/JavaScript等多语言的用户程序框架 Ability 框架,以及各种软硬件服务对外开放的多语言框架 API; 同时为采用鸿蒙操作系统的设备提供了 C/C++/JavaScript等多语言的框架 API,不同设备支持的 API 与系统的组件化裁剪程度相关。
4. 应用层
应用层包括系统应用和第三方非系统应用。鸿蒙操作系统的应用由一个或多个 FA(Feature Ability)或 PA(Particle Ability)组成。其中,FA 有 UI 界面,提供与用户交互的能力; 而 PA 无 UI 界面,提供后台运行任务的能力以及统一的数据访问抽象。基于FA/PA 开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。
3
●鸿蒙操作系统技术特性
1. 硬件互助,资源共享
1) 分布式软总线
分布式软总线是多种终端设备的统一基座,为设备之间的互连互通提供了统一的分布式通信能力,能够快速发现并连接设备,高效地分发任务和传输数据。分布式软总线示意图见图10-2。
■ 图10-2分布式软总线示意图
2) 分布式设备虚拟化
分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理、数据处理,多种设备共同形成一个超级虚拟终端。针对不同类型的任务,为用户匹配并选择能力合适的执行硬 件,让业务连续地在不同设备间流转,充分发挥不同设备的资源优势。分布式设备虚拟化 示意图见图10-3。
■ 图10-3分布式设备虚拟化示意图
3) 分布式数据管理
分布式数据管理基于分布式软总线的能力,实现应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据无缝衔接,为打造一致、流畅的用户体验创造了基础条件。分布式数据管理示意图见图10-4。
■ 图10-4分布式数据管理示意图
4) 分布式任务调度
分布式任务调度基于分布式软总线、分布式数据管理、分布式Profile等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况,以及用户的习惯和意图,选择合适的设备运行分布式任务。图10-5以应用迁移为例,简要地展示了分布式任务调度能力。
■ 图10-5分布式任务调度示意图
2. 一次开发,多端部署
鸿蒙操作系统提供了用户程序框架、Ability框架以及UI框架,支持应用开发过程中多终端的业务逻辑和界面逻辑进行复用,能够实现应用的一次开发、多端部署,提升了跨设备应用的开发效率。一次开发、多端部署示意图见图10-6。
■ 图10-6一次开发、多端部署示意图
3. 统一操作系统,弹性部署
鸿蒙操作系统通过组件化和小型化等设计方法,支持多种终端设备按需弹性部署,能够适配不同类别的硬件资源和功能需求。支撑通过编译链关系去自动生成组件化的依赖关系,形成组件树依赖图,支撑产品系统的便捷开发,降低硬件设备的开发门槛。
(1) 支持各组件的选择(组件可有可无)。根据硬件的形态和需求,可以选择所需的组件。
(2) 支持组件内功能集的配置(组件可大可小)。根据硬件的资源情况和功能需求,可以选择配置组件中的功能集。例如,选择配置图形框架组件中的部分控件。
(3) 支持组件间依赖的关联(平台可大可小)。根据编译链关系,可以自动生成组件化的依赖关系。例如,选择图形框架组件,将会自动选择依赖的图形引擎组件等。
02
搭建鸿蒙操作系统环境
鸿蒙操作系统开发环境基于Java开发环境,为了便于开发,华为官网提供了集成工具DevEco Studio。DevEco Studio 的编译构建依赖 JDK,DevEco Studio 预置了Open JDK,版本为1.8,安装过程中会自动安装 JDK。为保证DevEco Studio正常运行,建议计算机配置满足如下要求: 操作系统为windows 10 64 位、内存8GB 及以上、硬盘100GB及以上、分辨率1280×800px及以上。
分析
在开发过程中,UI界面开发可以选择使用JS UI框架,所以鸿蒙操作系统环境搭建包括DevEco Studio和Node.js的下载和安装。
1
●Node.js下载与安装
Node.js应用于开发 JavaScript应用和运行预览器功能,是开发鸿蒙操作系统应用过程中必备的软件。登录 Node.js 官方网站,下载 Node.js 软件包。选择 LTS 版本,Windows 64 位对应的软件包,见图10-7。
■ 图10-7Node.js 官方网站
单击下载后的软件包进行安装,全部按照默认设置单击 Next按钮,直至 Finish。安装过程中,Node.js 会自动在系统的 path 环境变量中配置 node.exe 的目录路径。
2
●DevEco Studio下载与安装
(1) 登录鸿蒙操作系统应用开发门户,单击右上角“注册”按钮,注册开发者账号,注册指导参考注册华为账号。如果已有华为开发者账号,直接单击“登录”按钮。
说明
使用 DevEco Studio 远程模拟器需要华为账号进行实名认证,建议在注册华为账号后,立即提交实名认证审核,认证方式包括“个人实名认证”和“企业实名认证”,详情请参考实名认证。
(2) 进入 HUAWEI DevEco Studio 产品页,下载 DevEco Studio 安装包。
(3) 双击下载的“deveco-studio-xxxx.exe”,进入 DevEco Studio 安装向导,在安装选项界面勾选DevEco Studio launcher复选框后,单击Next按钮,直至安装完成,如图10-8所示。
■ 图10-8DevEco Studio 安装向导