第一篇开发准备篇 学习目标 本篇为鸿蒙开发的准备篇,第1章主要介绍鸿蒙操作系统的技术特性和技术架构,第2章介绍如何配置鸿蒙应用开发的环境、下载安装鸿蒙开发工具DevEco Studio、申请华为开发者账号以及真机测试证书的步骤和流程。 主要内容如下: ■介绍鸿蒙操作系统的技术特性和技术架构; ■鸿蒙应用开发环境搭建、模拟器及真机调试。 如何学习本篇: ■通过本篇的学习,读者将对鸿蒙操作系统的特性、技术架构有比较全面的了解,为学习后续章节奠定基础; ■学习第2章,按照本书介绍的鸿蒙应用开发环境搭建的流程进行开发前的环境准备。 第1章 鸿蒙操作系统简介 2019年8月9日,华为公司在华为开发者大会上正式发布了鸿蒙操作系统(HarmonyOS)1.0,同时宣布该操作系统源代码开源。2020年9月10日,鸿蒙操作系统2.0正式发布,与鸿蒙1.0版本相比,鸿蒙2.0在分布式软总线、分布式数据管理、分布式安全等分布式能力上进行了升级,同时发布了自适应的UX(用户体验)框架,让开发者能够非常简单且快速地开发鸿蒙应用程序。 鸿蒙操作系统是一款面向全场景分布式操作系统。鸿蒙操作系统不同于现有的Android、iOS、Windows、Linux等操作系统,它设计的初衷是解决在5G万物互联时代,各个系统间的连接问题。鸿蒙操作系统面向的是1+8+N的全场景设备,能够根据不同内存级别的设备进行弹性组装和适配,并且实现跨设备交互信息。 1.1鸿蒙全场景战略 鸿蒙操作系统,打破了硬件间各自独立的生态边界,融入了全场景智慧生态,鸿蒙操作系统不局限于手机,还包括可穿戴设备、智能汽车等,创造一个超级智能终端互联的世界,将人、设备、场景有机地联系在一起。作为面向物联网时代的操作系统,将有望重塑物联网生态,对于华为来讲,将芯片、系统、人工智能等技术分享给全球,推动全社会数字化转型,继而进入智能社会新时代。对此,围绕系统构建庞大软硬生态,将带来万物智能的全场景生活生态。 华为的“1+8+N”这个产品战略是为了打造未来5G全场景智慧生活而制定的,面向5G高品质全场景的智慧生活,生态在各领域都可以体现出它的存在和价值,如图11所示。 图11华为“1+8+N”生态 在华为的1+8+N战略中,1和8都是华为自己构建的。1是指手机,8是指平板、PC、眼镜、智慧屏、AI音箱、耳机、手表、车机。从手机的优势向外围延展,N是指由生态系统合作伙伴提供的智能设备,基于用户为中心的家庭场景,提供全场景的视听、娱乐、社交、教育和健康等解决方案,从而很好地迎合时代更新换代的消费升级。 在华为的1+8+N生态中有一个非常重要的应用就是Huawei Share。最早是在手机与PC之间可以实现“一碰传”,后来Huawei Share在华为的1+8中实现更多的连接。通过Huawei Share,在华为自有的1+8中,可以实现一碰传文件、一碰传音、一碰联网、多屏协同等创新体验; 通过HUAWEI HiLink,华为1+8设备可同海量的N设备之间智慧互联,设备一键操控、语音交互、场景联动等极致体验被实现。 1.2鸿蒙操作系统技术特性 相对于市面上已有的操作系统,尤其是相对于安卓系统,鸿蒙操作系统具备如下3个主要特征: ①以分布式为基础的多终端屏幕共享,跨屏交互; ②系统与硬件解耦,弹性部署; ③应用一次开发,多端部署。 1.2.1分布式设计 随着智能设备越来越多,为每个设备设计一个独立的操作系统几乎是不可能的,而鸿蒙操作系统的目的是解决多设备如何共享一个操作系统的问题。 鸿蒙操作系统是将设备的硬件能力拆散,当成一个个共享资源,当用户需要某个能力时,就可以将它从硬件库里提取出来跨界使用。它系统层级更清晰,也更加模块化,可以依照不同的处理器性能让开发商去调整系统模块,从而运用于更多的智能设备。 这就意味着,将来洗衣机、电视机、冰箱、空调器,甚至小到灯泡或者门锁智能化之后,它们都能搭载鸿蒙操作系统,这有一个好处,如果你有一个鸿蒙操作系统的便携设备,例如手机,你就可以无须任何有线连接,实现和所有设备的联动。 鸿蒙不是手机系统的简单替代,而是全场景的底座,其三大分布式能力分别是分布式软总线、分布式数据管理和分布式安全的解决方案,如图12所示。 图12鸿蒙全场景的底座: 三大分布式能力 1. 分布式软总线 鸿蒙分布式软总线技术是基于华为多年的通信技术积累,在1+8+N设备间搭建一条“无形”的总线,具备自发现、自组网、高带宽、低时延的特点,如图13所示。 图13分布式软总线示意图 设备通信方式多种多样(USB、WiFi、BT等),不同通信方式使用差异很大且烦琐,同时通信链路的融合共享和冲突无法处理,通信安全问题也不好保证。分布式软总线致力于实现近场设备间统一的分布式通信能力管理,提供不区分链路的设备发现和传输接口。目前实现能力包含: ①服务发布,服务发布后周边的设备可以发现并使用服务; ②数据传输,根据服务的名称和设备ID建立一个会话,这样就可以实现服务间的传输功能; ③安全,提供通信数据的加密能力。 分布式软总线为设备之间的互联互通提供了统一的分布式通信能力,为设备之间的无感发现和零等待传输创造了条件。开发者只需聚焦于业务逻辑的实现,无须关注组网方式与底层协议。 2. 分布式数据管理 现在,每个人拥有的设备越来越多,大家经常需要将某一设备的数据导入其他设备上,这使得数据在不同设备之间流转越来越频繁。假设我们有一组照片需要在手机、平板、智慧屏和PC之间共享和编辑,此时就需要考虑这些照片如何在这些不同的设备上进行存储,以及如何相互访问。HarmonyOS分布式数据管理的目标就是为开发者在系统层面解决这些问题,让应用开发变得简单,它能够保证多设备间的数据安全,解决多设备间数据同步、跨设备查找和访问等很多关键技术问题。 分布式数据管理,基于分布式软总线的能力,实现应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据无缝衔接,为打造一致、流畅的用户体验创造了基础条件。分布式数据管理优势如图14所示。 图14分布式数据管理优势 分布式数据管理可以让跨设备数据处理像本地一样方便快捷,其中,鸿蒙的分布式系统比微软Samba软件的远程读写性能快4倍,分布式文件系统的远程读写性能是Samba的4倍; 分布式数据库OPS(Operation Per Second 每秒操作次数)性能是ContentProvider的1.3倍。ContentProvider是Android四大组件之一,其作用是为不同的应用之间数据共享提供统一的接口。 分布式检索方面,检索性能是iOS Core Spotlight(为iOS的搜索提供一些App内部的数据,便于用户在iPhone上下拉出现的搜索框中,搜索我们所使用的App中的内容)的1.2倍,如图15所示。 图15分布式数据管理的方便快捷性 3. 分布式安全 目前华为是业界第一家在微内核领域通过CC EAL5+安全认证的厂商。分布式安全确保正确的人用正确的设备访问正确的数据。 CC EAL安全证书,目前国际范围内最受普遍认可的信息安全评价标准是CC(即Common Criteria),其中共定义了由低到高EAL1到EAL7共7个等级,可以简单理解为等级越高,消费者使用这款产品时,对它的安全性越有信心。 确保正确的人。如图16所示,当用户进行解锁、付款、登录等行为时系统会主动拉出认证请求,并通过分布式技术的可信互联能力,完成多设备协同身份认证,确保使用者是正确的人。 图16正确的人 用正确的设备。早在EMUI 10,TEE OS(TEE即可信执行环境,该环境可以保证不被常规操作系统干扰计算,因此称为“可信”)安全内核就获得了全球商用OS内核最高安全等级的CC EAL5+安全等级认证,而该TEE OS可以弹性地部署到任何一个IoT设备上。 在多设备融合的情况下,通过HarmonyOS,每个设备都会获得所有链接在一起的设备的安全能力加持。当单一设备受到外部攻击时,完全可以调用其他设备上的安全能力进行共同防御,如图17所示。 图17安全能力进行共同防御 访问正确的数据。如图18所示,HarmonyOS会根据安全等级的不同,对数据和设备进行分类分级保护,敏感数据只能保存在高安全等级设备中。在数据流通中,只有高安全等级设备可以访问低安全等级设备而低安全等级设备不能访问高安全等级设备,由此确保数据流通安全可信。 图18访问正确的数据 1.2.2一次开发,多端部署 HUAWEI DevEco 2.0集成开发工具(IDE),如图19所示,为开发者提供了多语言统一的开发编译环境,分布式架构Kit提供屏幕布局控件及交互的自动适配,支持控件拖曳,面向预览的可视化编程,从而使开发者可以基于同一工程高效构建多端自动运行App,实现真正的一次开发,多端部署,在跨设备之间实现共享生态。 图19HUAWEI DevEco 2.0集成开发工具(IDE)构建全场景应用 华为方舟编译器是首个取代Android虚拟机模式的静态编译器,可供开发者在开发环境中一次性将高级语言编译为机器码。此外,方舟编译器未来将支持多语言统一编译,可大幅提高开发效率。 1.2.3系统与硬件解耦,弹性部署 鸿蒙操作系统分布式将硬件能力虚拟化,将硬件能力与终端解耦,并将多终端硬件能力融合成能力资源池。如图110所示,能力资源池包括显示、摄像头、扬声器、话筒、通信、传感、计算。 图110操作系统与硬件能力解耦,硬件能力虚拟化的资源池 HarmonyOS通过组件化和小型化等设计方法,支持多种终端设备按需弹性部署,能够适配不同类别的硬件资源和功能需求。支撑通过编译链关系自动生成组件化的依赖关系,形成组件树依赖图,支撑产品系统的便捷开发,从而降低硬件设备的开发门槛。 鸿蒙操作系统设计上支持根据硬件的形态和需求,可以选择所需的组件; 支持根据硬件的资源情况和功能需求,可以选择配置组件中的功能集,例如,选择配置图形框架组件中的部分控件; 支持根据编译链关系,可以自动生成组件化的依赖关系,例如,选择图形框架组件,将会自动选择依赖的图形引擎组件等。 HarmonyOS组件化设计实现了内存从512KB级别到4GB级别都有合适的裁剪方案,这样就让鸿蒙能够支持各种各样的终端设备,从IoT(Internet of Things,物联网)到可穿戴、摄像头、VR、音箱、行车记录仪、电视机、PC、平板、手机等各种终端设备。 1.3鸿蒙操作系统技术架构 目前鸿蒙操作系统是基于Linux系统来开发自研操作系统的。这样有两大好处: 一是可以很好地兼容安卓系统的App,毕竟安卓系统是基于Linux系统来开发的,这样在生态上的问题就解决了很大一部分了。 另外,鸿蒙是一个集计算机、手机、汽车等设备于一体的大一统的系统,目前Linux系统在计算机领域的应用生态也是不错的,基于Linux系统来开发,在计算机领域的应用生态,也解决了很大一部分。 鸿蒙操作系统整体遵从分层设计,如图111所示,从下向上依次为内核层、系统服务层、框架层和应用层。在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统、功能或者模块。 图111鸿蒙操作系统技术架构 1.3.1内核层 鸿蒙内核层由鸿蒙微内核、Linux 内核、Lite OS 组成,未来将发展为完全的鸿蒙微内核架构,如图112所示。 图112鸿蒙操作系统未来将采用微内核 HarmonyOS目前采用多内核设计,支持针对不同资源受限设备选用不同的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。 (1) 内核子系统: 内核抽象层(Kernel Abstract Layer,KAL)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。 (2) 驱动子系统: HarmonyOS驱动框架(HDF)是HarmonyOS硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。 1.3.2系统服务层 系统服务层是HarmonyOS的核心能力集合,通过框架层对应用程序提供服务。 该层包含以下几部分。 (1) 系统基本能力子系统集: 为分布式应用在HarmonyOS多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全、AI等子系统组成。 (2) 基础软件服务子系统集: 为HarmonyOS提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX、MSDP(组播源发现协议)&DV等子系统组成。 (3) 增强软件服务子系统集: 为HarmonyOS提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。 (4) 硬件服务子系统集: 为HarmonyOS提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。 根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。 1.3.3框架层 框架层为HarmonyOS的应用程序提供了Java、C、C++、JavaScript等多语言的用户程序框架和Ability框架,如图113所示,以及各种软硬件服务对外开放的多语言框架API; 同时为采用HarmonyOS的设备提供了C、 图113鸿蒙操作系统应用开发框架 C++、JavaScript等多语言的框架API,不同设备支持的API与系统的组件化裁剪程度相关。 1.3.4应用层 应用层包括系统应用和第三方非系统应用。HarmonyOS的应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,其提供与用户交互的能力,而PA则无UI界面,提供后台运行任务的能力及统一的数据访问抽象。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验,如图114所示。 图114基于FA/PA应用开发 1.4本章小结 这里引用华为消费者业务CEO余承东先生的一句话: “没有人能够熄灭满天星光,每一位开发者,都是华为要汇聚的星星之火,星星之火可以燎原。”华为鸿蒙操作系统作为底层,为企业数字化赋能,其芯片、人工智能等技术通过云端输出,为全球数字化带来创新活力,而基于鸿蒙操作系统打造的HMS移动生态,将是继安卓、iOS后全球第三大移动应用生态,而这仅用了一年时间。 鸿蒙操作系统的到来,对我国软硬件生态意义重大,在万物互联时代掌握话语权。那么要发挥鸿蒙价值,无论是移动HMS生态,亦是数字化生态,关键还在应用。当然,吸引开发者对华为来讲也面临诸多挑战,与此同时,如果鸿蒙操作系统能成功,则将会创造一个千亿,甚至万亿的生态大市场。截至目前,华为HMS移动生态有1840亿次应用下载和分发量,有4.9亿活跃用户,对于积极拥抱鸿蒙生态的开发者来讲,也带来新一波红利。 第2章 鸿蒙应用开发准备 本章介绍如何配置鸿蒙应用开发环境、下载安装集成开发工具DevEco Studio、使用鸿蒙模拟器、申请真机调试证书,以及如何使用Scrcpy Android投屏软件进行真机测试。通过本章的学习,读者可以逐步搭建好鸿蒙应用开发所需的相关环境,为后续章节学习做好准备工作。 2.1鸿蒙应用开发环境搭建 鸿蒙应用开发环境搭建分两步,分别是下载安装Node.js和下载安装DevEco Studio。 2.1.1下载和安装Node.js Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型,并可让JavaScript运行在服务器端的开发平台。 Node.js应用于开发鸿蒙JavaScript应用程序和运行鸿蒙预览器功能,是开发HarmonyOS应用过程中必备的软件。 下载安装Node.js,可选择LTS版本12.0.0及以上,Windows 64位对应的软件包,如图21所示。Node.js 安装包及源代码下载网址为https://nodejs.org/en/download/。 图21Node.js下载 双击下载后的软件包进行安装,根据安装向导完成Node.js的安装。Mac系统在安装软件过程中,需要输入用户系统密码来授权系统运行安装新软件。 Windows系统具体的安装步骤如下。 步骤1: 双击下载后的安装包 nodev14.16.0x64.msi进行安装,如图22所示。 图22运行Node.js安装包 步骤2: 勾选接受协议选项,单击Next按钮,如图23所示。 图23勾选接受协议选项,单击Next按钮 步骤3: Node.js默认安装目录为 C:\Program Files\Node.js\,安装过程中可以修改目录,并单击Next按钮,如图24所示。 图24修改Node.js安装目录 步骤4: 单击树形图标来选择需要的安装模式,一般选择默认即可,然后单击Next按钮,如图25所示。 图25安装模式(选择默认即可) 步骤5: 单击Install按钮开始安装Node.js,如图26所示。也可以单击Back按钮来修改先前的配置,接下来单击Next按钮。 图26单击Install按钮开始安装Node.js 步骤6: 单击Finish按钮退出安装向导,如图27所示。 图27单击Finish按钮退出安装向导 步骤7: 打开cmd输入node v查看Node.js的版本号,如图28所示,表示Node安装成功了。 图28查看Node.js版本号 macOS上安装Node可以通过以下两种方式实现。 (1) 在官方下载网站下载pkg安装包,直接单击安装即可。 (2) 使用brew命令来安装,命令如下: brew install node 2.1.2下载和安装DevEco Studio HUAWEI DevEco Studio(以下简称DevEco Studio)是基于IntelliJ IDEA Community开源版本打造的,面向华为终端全场景多设备的一站式集成开发环境(IDE),为开发者提供工程模板创建、开发、编译、调试、发布等E2E的HarmonyOS应用开发服务。通过使用DevEco Studio,开发者可以更高效地开发具备HarmonyOS分布式能力的应用,进而提升创新效率。 下面介绍如何下载安装DevEco Studio开发工具,具体的步骤如下: (1) 登录HarmonysOS应用开发门户,单击右上角注册按钮,注册开发者账号。可以访问如下网址: https://id1.cloud.huawei.com/CAS/portal/login.html,登录成功后,再访问HUAWEI DevEco Studio产品页,下载DevEco Studio安装包,如图29所示。 图29华为账号登录页面 (2) 进入HUAWEI DevEco Studio产品页,下载DevEco Studio安装包,如图210所示。 图210DevEco Studio 2.0下载 (3) Windows用户双击下载的安装文件devecostudioxxxx.exe,进入DevEco Studio安装向导,在如下安装选项界面勾选DevEco Studio launcher后,单击Next按钮,如图211所示,直至安装完成。 图211DevEco Studio 2.0 Windows安装 (4) Mac用户双击下载的devecostudioxxxx.dmg软件包。 (5) 在安装界面中,将DevEcoStudio.app拖曳到Applications中,如图212所示,等待安装完成。 图212DevEco Studio 2.0 Mac安装 (6) 安装完成后,先不要勾选Run DevEco Studio选项,接下来需要根据需要配置开发环境,如图213所示,检查和配置开发环境。 图213DevEco Studio 2.0 安装检测 (7) DevEco Studio的编译会构建依赖JDK,DevEco Studio预置了Open JDK,版本为1.8,安装过程中会自动安装JDK。 2.1.3运行Hello World DevEco Studio开发环境配置完成后,可以通过运行Hello World工程来验证环境设置是否正确。以Wearable工程为例,在Wearable远程模拟器中运行该工程。 我们来按步骤完成并运行一个Hello World程序,步骤如下。 步骤1: 打开DevEco Studio,在欢迎页单击Create HarmonyOS Project,如图214所示,创建一个新工程。 图214DevEco Studio 欢迎页 步骤2: 选择设备类型和模板,以Wearable为例,选择Empty Feature Ability(Java),单击Next按钮,如图215所示。 图215选择模板 步骤3: 填写项目相关信息,保持默认值即可,单击Finish按钮。 步骤4: 工程创建完成后,DevEco Studio会自动进行工程同步,同步成功后如图216所示。首次创建工程时,会自动下载Gradle工具,时间较长,需耐心等待。 图216安装DevEco Gradle编译环境 步骤5: 在DevEco Studio菜单栏,单击Tools→HVD Manager。首次使用模拟器需下载模拟器相关资源,单击OK按钮,等待资源下载完成后,单击模拟器界面左下角的Refresh按钮,如图217所示。 图217下载安装模拟器 步骤6: 在浏览器中弹出华为开发者联盟账号登录界面,输入已实名认证的华为开发者联盟账号的用户名和密码进行登录,如图218所示。