鸿蒙生态应用开发白皮书V3.0 PDF - 华为
Document Details

Uploaded by TrustworthyJuxtaposition6902
2024
Tags
Summary
这本白皮书详细介绍了华为鸿蒙生态应用开发V3.0版本,涵盖了万物互联时代的机遇与挑战,鸿蒙生态的核心概念和技术,以及高效的开发与测试方法。它阐述了"一次开发,多端部署"的设计理念,以及如何构建轻量化服务,实现智慧分发,并提供原生AI能力,以满足高性能应用的需求。 该文件还包含全场景案例参考。
Full Transcript
V3.0 版权所有 © 华为终端有限公司 2024。 保留一切权利。 本材料所载内容受著作权法的保护,著作权由华为公司或其许可人拥有,但注明引用其他方的内容除外。 未经华为公司或其许可人事先书面许可,任何人不得将本材料中的任何内容以任何方式进行复制、经销、 翻印、播放、以超级链路连接或传送、存储于信息检索系统或者其...
V3.0 版权所有 © 华为终端有限公司 2024。 保留一切权利。 本材料所载内容受著作权法的保护,著作权由华为公司或其许可人拥有,但注明引用其他方的内容除外。 未经华为公司或其许可人事先书面许可,任何人不得将本材料中的任何内容以任何方式进行复制、经销、 翻印、播放、以超级链路连接或传送、存储于信息检索系统或者其他任何商业目的的使用。 商标声明 以上为华为公司的商标(非详尽清单),未经华为公司书面事先明示许可,任何第三方不得以任何形式使 用。 注意 华为会不定期对本文档的内容进行更新。 本文档仅作为使用指导,文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。 华为终端有限公司 地址: 广东省东莞市松山湖园区新城路 2 号 网址: https://consumer.huawei.com CONTENT O1 万物互联时代应用开发的机遇、 挑战和趋势 O2 鸿蒙生态应用开发核心概念 O3 鸿蒙生态应用核心技术理念 1)一次开发,多端部署 · · · · · · · · · · · 2)可分可合,自由流转 · · · · · · · · · · · 9 18 3)统一生态,原生智能 · · · · · · · · · · · 21 O4 鸿蒙生态应用开发能力全景 1)赋能套件 · · · · · · · · · · · · · · · 2)鸿蒙开发套件 · · · · · · · · · · · · · 24 26 3)三方库 · · · · · · · · · · · · · · · · · 45 4)鸿蒙生态伙伴 SDK 市场 · · · · · · · · 46 5)开发者支持平台 · · · · · · · · · · · · · 47 O5 高效开发与测试 1)典型开发场景 · · · · · · · · · · · · · · 2)ArkTS 语言 · · · · · · · · · · · · · · 50 50 3)ArkUI 框架 · · · · · · · · · · · · · · 51 4)应用程序框架 · · · · · · · · · · · · · · 63 5)HarmonyOS SDK · · · · · · · · · · · 66 6)集成开发环境 · · · · · · · · · · · · · · 71 7)测试工具 · · · · · · · · ·· · · · · · · 81 O6 统一上架与多端分发 1)快速上架 · · · · · · · · · · · · · · · · 2)应用分发 · · · · · · · · · · · · · · · · 94 98 3)服务分发 · · · · · · · · · · · · · · · · 101 O7 自由流转与分布式运行环境 1)价值与架构定义 · · · · · · · · · · · · · 108 2)跨端迁移 · · · · · · · · · · · · · · · · 111 3)多端协同 · · · · · · · · · · · · · · · · 112 O8 全方位运维分析 O9 全场景案例参考 1O 附录:术语 Chapter 1 万物互联时代应用开发 的机遇、挑战和趋势 2 经过十多年的发展,传统移动互联网的增长红利已渐见顶。万物互联时代正在开启,应 用的设备底座将从几十亿手机扩展到数百亿 IoT 设备。GSMA 预测到 2025 年,全球物联网 终端连接数量将达 246 亿个,其中消费物联网终端连接数量将达 110 亿个(注:数据来自 于全球移动通信系统协会发布的《2020 年移动经济》报告)。IDC 预计到 2025 年,中国物 联网总连接量将达到 102.7 亿个(注:数据来自于 IDC 发布的《中国物联网连接规模预测, 2020—2025》报告)。全新的全场景设备体验,正深入改变消费者的使用习惯。 同时应 用开发者也面临设备底座从手机单设备到全场景多设备的转变,通过全场景多设备作为全新 的底座,为消费者带来万物互联时代更为高效、便捷的体验。 新的场景同时也带来了新的挑战。开发者不仅需要支持更加多样化的设备,还需要支持 跨设备的协作。不同设备类型意味着不同的传感器能力、硬件能力、屏幕尺寸、操作系统和 开发语言,还意味着差异化的交互方式。同时跨设备协作也让开发者面临分布式开发带来的 各种复杂性,例如跨设备的网络通信、数据同步等。若采取传统开发模式,适配和管理工作 量将非常巨大。当前移动应用开发中遇到的主要挑战包括: 针对不同设备上的不同操作系统,重复开发,维护多套版本。 多种语言栈,对人员技能要求高。 多种开发框架,不同的编程范式。 命令式编程,需关注细节,变更频繁,维护成本高。 与此同时,AI 时代全面来临,在 PC 互联网到移动互联网到智能化终端演进过程中,AI 计算主要在云端数据中心进行,非常依赖网络,具有一定的时延,且数据传输的安全性、私 密性不能得到有效保证。随着人们对交互和信息获取的智能化要求越来越高,移动设备的计 3 算能力越来越强,在设备侧就能提供 AI 的相关能力,例如自然语言交互、环境智能感知、 图像识别等。如何快速地使用设备侧的强大 AI 能力,使自己的应用更加智能化,进而更好 的服务消费者,也是开发者面临的全新挑战。 移动终端上的应用生态发展到今天也面临着变革。传统厚重的 App,整体体验好,功能 齐全,但开发成本高、周期长,且存在搜索,安装,升级,卸载等一系列需要用户主动关注 的显性操作,这些显性操作给用户带来了实质性的使用成本。轻量化、可快速达成消费者意 图、可独立执行、完成单一功能的程序实体正成为新的趋势,例如小程序、App Clips、快 应用等。根据阿拉丁指数的统计,全网小程序已经突破 700 万个(注:数据来自于阿拉丁研 究院发布的《2021 年度小程序互联网发展白皮书》),远超 App 数量。大型应用开发者普 遍向用户提供轻量化程序实体。在很多特定的使用场景下,小程序等轻量化程序实体的使用 占比已超过 App,成为面向用户的主要触达方式。 轻量化的程序实体所具备的“即用即走、无需安装卸载、持续更新”的特征,也推动了 App 基于搜索下载的“人找应用”的传统分发向“服务找人”的智慧分发的演进。App 遵 循“搜索、下载、安装、使用”的模式,用户主动发现的成本高,拉新、促活、召回的全生 命周期流程相对被动。轻量化的程序实体具有即用即走的体验,可通过各类终端的系统级智 慧入口进行分发,甚至可以在三方 App 中分发,依托无所不在的入口流量和标签化识别, 向用户主动提供精准服务。配合 CPS(Cost Per Sale)等商业模式,可以为开发者带来更高 的 ROI(Return of Investment)。 为了更好的抓住机遇,应对万物互联所带来的一系列挑战,新的应用生态应该具备如下 特征: 4 单一设备延伸到多设备:应用一次开发就能在多个设备上运行,软件实体能够从单 一设备转移到其他设备上,且多个设备间能够协同运行,给消费者提供全新的分布 式体验。 厚重应用模式到轻量化服务模式:提供轻量化的服务,较低的资源消耗,一步直达, 快速完成消费者特定场景的任务。 集中化分发到 AI 加持下的智慧分发:为消费者提供智慧场景服务,实现“服务找 人”。 纯软件到软硬芯协同的 AI 能力:提供软硬芯协同优化的原生 AI 能力,全面满足应 用高性能诉求。 5 Chapter 2 鸿蒙生态应用 开发核心概念 6 HarmonyOS 应用:使用 HarmonyOS SDK 开发的应用程序,能够在华为终端设备 (如:手机、平板等)上运行,其有两种形态: 传统方式的需要安装的 App。 轻量级,具备免安装,随处可及,服务直达,自由流转等关键特征的元服务。 HarmonyOS 元服务:元服务是 HarmonyOS 面向万物互联时代提供的一种轻量级 应用程序形态。它基于 HarmonyOS 平台开放能力开发,打包为 App Pack 形态,运行 在 HarmonyOS 操作系统,由 HarmonyOS 应用程序框架管理,具备随处可及、服务直 达、跨设备等核心特征。 万能卡片:HarmonyOS 系统定义的一种界面展示形式,它是 HarmonyOS 应用和 元服务的一个可选组成部分,将重要信息或操作前置到卡片,以达到服务直达,减少操 作层级的目的。万能卡片常用于嵌入到其他系统应用(桌面/负一屏)中作为其界面的 一部分显示,并支持点击拉起应用或元服务。 HarmonyOS 应用与元服务基于同一个鸿蒙系统技术栈开发,同属一个鸿蒙生态。 开发者通过业务解耦将应用分解为若干元服务独立开发,按需根据场景组合成复杂应用。 7 Chapter 3 鸿蒙生态应用 核心技术理念 - 1)一次开发,多端部署 - 2)可分可合,自由流转 - 3)统一生态,原生智能 8 在万物智联时代重要机遇期,鸿蒙系统结合移动生态发展的趋势,提出了三大技术理念: 一次开发,多端部署;可分可合,自由流转;统一生态,原生智能。 图 3-1:核心技术理念 1)一次开发,多端部署 “一次开发,多端部署”指的是一个工程,一次开发上架,多端按需部署。目的是支撑 开发者高效地开发多种终端设备上的应用。为了实现这一目的,鸿蒙系统提供了几个核心能 力,包括多端开发环境,多端开发能力以及多端分发机制。 9 图 3-2:一次开发 多端部署 多端开发环境 HUAWEI DevEco Studio 是面向全场景多设备提供的一站式开发平台,支持多端双向 预览、分布式调优、分布式调试、多设备模拟、低代码可视化开发等能力,帮助开发者降低 成本、提升效率、提高质量。HUAWEI DevEco Studio 提供的核心能力如下图所示: 图 3-3:HUAWEI DevEco Studio 核心功能和特征 10 1. 多端双向预览 在鸿蒙生态应用的开发阶段,因不同设备的屏幕分辨率、形状、大小等差异,开发者需 要在不同设备上查看 UI 界面显示,确保实现效果与设计目标一致。传统的开发模式下,开 发者需要获取大量不同的真机设备用于测试验证。HUAWEI DevEco Studio 提供了多种设 备的双向预览能力,支持同时查看 UI 代码在多个设备上的预览效果,并支持 UI 代码和预览 效果的双向定位修改。 2. 分布式调试 鸿蒙生态应用具有天然的分布式特征,体现在同一个应用在多个设备之间会有大量的交 互。开发过程中,对这些交互进行调试时,需要对每个设备分别建立调试会话,并且需要在 多个设备之间来回切换,容易造成调试不连续、操作繁琐等问题。为了提升开发效率, HUAWEI DevEco Studio 提供了分布式调试功能,支持跨设备调试,通过代码断点和调试 堆栈可以方便地跟踪不同设备之间的交互,用于定位多设备互动场景下的代码缺陷。 图 3-4:分布式调试交互图 11 3. 分布式调优 分布式应用的运行性能至关重要。在跨端迁移场景中,需要应用在目标设备上快速启动, 以实现和原设备之间的无缝衔接;在多端协同场景中,需要应用在算力和资源不同的多个设 备上都能高效运行,以获得整体的流畅体验。以往开发者在分析分布式应用的性能问题时, 需要单独查看每个设备的性能数据,并手动关联分析这些数据,操作繁琐,复杂度高。 HUAWEI DevEco Studio 提供了分布式调优功能,支持多设备分布式调用链跟踪、跨设备 调用堆栈缝合,同时采集多设备性能数据并进行联合分析。 图 3-5:多设备联合分析 4. 多设备模拟 移动应用开发时需要使用本地模拟器来进行应用调试,实现快速开发的目的。鸿蒙生态 应用需要运行在多种不同类型的设备上,为此 HUAWEI DevEco Studio 提供了不同类型的 设备模拟,支持开发者在多个模拟设备上进行开发调试,降低门槛、节约成本。 12 5. 低代码可视化开发 低代码开发提供 UI 可视化开发能力,支持自由拖拽组件和可视化数据绑定,可快速预 览效果,所见即所得。通过拖拽式编排、可视化配置的方式,帮助开发者减少重复性的代码 编写,快速地构建多端应用程序。低代码开发的产物如组件、模板等可以被其他模块的代码 引用,并且能通过跨工程复用,支持开发团队协同完成复杂应用的开发。 多端开发能力 应用如需在多个设备上运行,需要适配不同的屏幕尺寸和分辨率、不同的交互方式(如 触摸和键盘等)、不同的硬件能力(如内存差异和器件差异等),开发成本较高。因此,多 端开发能力的核心目标是降低多设备应用的开发成本。为了实现该目标,鸿蒙系统提供了以 下几个核心能力,支持多端 UI 适配,交互事件归一,设备能力抽象,帮助开发者降低开发 与维护成本,提高代码复用度。 1. 多端 UI 适配 不同设备屏幕尺寸、分辨率等存在差异,鸿蒙系统将对屏幕进行逻辑抽象,包括尺寸和 物理像素,并提供丰富的自适应/响应式的布局和视觉能力,方便开发者进行不同屏幕的界 面适配。 屏幕逻辑抽象:鸿蒙系统提供虚拟像素 vp(virtual pixel)对分辨率进行抽象,不同设 备的系统在底层将物理像素转化成虚拟像素,为应用开发者提供统一单位。不同设备的尺寸 存在差异,鸿蒙系统根据设备的屏幕水平宽度,抽象和定义了四种尺寸:超小(xs)、小 (sm)、中(md)、大(lg)。这四种抽象后的屏幕尺寸与日常使用的设备屏幕类型有一 13 定的对应关系,例如:超小对应智能穿戴设备,小对应手机和折叠屏折叠态,中对应折叠屏 展开态和平板,大对应智慧屏。开发者可面向应用运行的目标设备进行屏幕类型的适配。 图 3-6:尺寸抽象化 布局:鸿蒙系统提供的布局主要分为自适应布局和响应式布局。自适应布局是当外部容 器大小发生变化时,容器内元素可以根据相对关系自动变化以适应外部容器变化的布局能力。 相对关系包含占比、固定宽高比、显示优先级等。当前自适应布局能力主要有 7 种:拉伸能 力、均分能力、占比能力、缩放能力、延伸能力、隐藏能力、折行能力。响应式布局是当显 示空间大小发生变化时,布局可以根据预设断点、栅格或特定的特征(如屏幕方向、窗口宽 高等)进行自动切换。当前响应式布局能力主要有 3 种:断点、媒体查询、栅格布局。鸿蒙 系统将响应式布局能力下沉到默认组件的基础属性中,比如网格、列表和轮播组件等,支持 自动增加显示列数,以便充分利用屏幕宽度,节省应用开发工作量。 视觉:鸿蒙系统提供的视觉样式能力,包括分层参数、多态组件和主题。 2. 交互事件归一 事件归一抽象:不同设备间的交互方式等存在差异,如触摸、键盘、鼠标、语音、手写 笔等,鸿蒙系统将不同设备的输入映射成归一交互事件,从而简化开发者适配逻辑。 14 以缩放交互为例,通过多指触控的张合来完成缩放动作,在多设备场景下,缩放交互会 出现多种不同的操作输入方式,如表 3-1 所示。为了让应用更容易的支持不同的交互方式, 鸿蒙系统提供归一的缩放交互事件。 表 3-1:缩放交互的规则 操作方 触屏双指捏合 键盘 Ctrl 键+鼠 键盘 Ctrl 键+ 触控板双指捏合 表冠旋转交互 式 交互 标滚轮交互 “+/-”键交互 交互 上报事 触屏双指捏合 按键+滚轮组合 触控板双指捏合 按键组合点击事件 表冠旋转事件 件 事件 事件 事件 组件归一响应:当应用部署在不同设备上供用户使用时,需要支持多种 I/O 设备,界面 呈现出相应的状态为用户提供正确的视觉引导。例如触摸时显示按压状态,鼠标特有的悬停 状态,键盘走焦状态。鸿蒙系统默认提供多种交互方式的组件实现,方便开发者支持多种输 入方式。 3. 设备能力抽象 不同设备间的软、硬件能力等存在差异,如设备是否具备定位能力、是否具备摄像头、 是否具备蓝牙功能等,鸿蒙系统需要对设备能力进行逻辑抽象,并提供接口来查询设备是否 支持某一能力,方便开发者进行不同软、硬件能力的功能适配。在鸿蒙系统中,使用 SystemCapability(简写为 SysCap)定义每个部件对应用开发者提供的系统软硬件能力。 应用开发者基于统一的方式访问不同设备的能力。 15 图 3-7:API、SystemCapability、部件和设备的关系 多端分发机制 如果需要开发多设备上运行的应用,一般会针对不同类型的设备多次开发并独立上架。 开发和维护的成本大,为了解决这个问题,鸿蒙系统提供了“一次开发,多端部署”的能力, 开发者开发多设备应用,只需要一套工程,一次打包出多个 HAP,统一上架,即可根据设 备类型按需进行分发。 除了可以开发传统的应用,开发者还可以开发元服务。元服务是一种面向未来的服务提 供方式,具有独立入口的、免安装的、可为用户提供一个或多个便捷服务的应用程序形态。 鸿蒙系统为元服务提供了更多的分发入口,方便用户获取,同时也增加了元服务露出的机会。 16 1. 多设备按需分发 鸿蒙系统提供了两种模式帮助开发者基于“一次开发,多端部署”能力分发应用和元服 务到不同设备上。 图 3-8:多设备按需分发的两种模式 模式 1:应用或服务的 UI 自适应不同尺寸的设备屏幕,并且在不同设备的功能相同, 可以实现多设备共享一个 HAP 包。这种场景下建议开发者通过一个模块来开发,并 配置该模块支持多设备,然后再编译构建生成一个 HAP,分发到不同类型的设备上 运行。 模式 2:应用或服务的 UI、功能在不同设备间存在差异,无法实现 HAP 包多设备归 一。可根据实际情况设置不同模块适用的设备类型,编译构建多个 HAP 包,一起上 架。HUAWEI AppGallery Connect 会自动提取 HAP 中的设备类型的配置信息,为 对应的设备自动分发正确的 HAP 包组合。 17 2. 多入口按需分发 鸿蒙系统为元服务提供了更多的分发入口,基于场景和用户意图拉起元服务,实现“服 务直达”。鸿蒙生态提供的丰富入口如下图所示: 图 3-9:多入口按需分发 2)可分可合,自由流转 元服务是鸿蒙系统提供的一种全新的应用形态,具有独立入口,用户可通过点击、碰一 碰、扫一扫等方式直接触发,无需显式安装,由程序框架后台静默安装后即可使用,可为用 户提供便捷服务。 传统移动生态下,开发者通常需要开发一个原生应用版本,如果提供小程序给用户,往 往需要开发若干个独立的小程序。鸿蒙生态下,鸿蒙原生支持元服务开发,开发者无需维护 多套版本,通过业务解耦将应用分解为若干元服务独立开发,按需根据场景组合成复杂应用。 18 元服务基于鸿蒙系统 API 开发,支持运行在 1+8+N 设备上,供用户在合适的场景、 合适的设备上便捷使用。元服务是支撑可分可合,自由流转的轻量化程序实体,帮助开发者 的服务更快触达用户。具备如下特点: 触手可及:元服务可以在服务中心发现并使用,同时也可以基于合适场景被主动推 荐给用户使用,例如用户可在服务中心和小艺建议中发现系统推荐的服务。 服务直达:元服务无需安装卸载,“秒开体验”,即点即用,即用即走。 万能卡片:支持用户无需打开元服务便可获取服务内重要信息的展示和动态变化, 如天气、关键事务备忘、热点新闻列表。 自由流转:元服务支持运行在多设备上并按需跨端迁移,或者多个设备协同起来给 用户提供良好的体验。例如手机上未完成的邮件,迁移到平板继续编辑,手机用作 文档翻页和批注,配合智慧屏完成分布式办公;例如分布式游戏场景,手机可作为 手柄,与智慧屏配合玩游戏,获得新奇游戏体验。 可分可合 在开发态,开发者通过业务解耦,把不同的业务拆分为多个模块。 在部署态,开发者可以将一个或多个模块自由组合,打包成不同的 App Pack 独立上 架。 在分发运行态,单个 HAP 作为元服务分发满足用户单一使用场景,也可以多个 HAP 组 合为应用分发满足用户更加复杂的使用场景。 19 图 3-10:打包上架模式 自由流转 传统应用只能在单个设备内运行,当用户有多个设备,且要完成多个任务时,则需要在 多个设备间来回切换。因此应用能够在设备之间流转,不间断给用户提供服务的能力就变得 非常重要。 鸿蒙系统提供了自由流转的能力,使得开发者可以方便地开发出跨越多个设备的应用, 用户也能够方便地使用这些功能。 自由流转可分为跨端迁移和多端协同两种情况。他们分别是时间上的串行交互和时间上 的并行交互。自由流转不仅带给用户全新的交互体验,也为开发者搭建了一座从单设备时代 通往多设备时代的桥梁。关于跨端迁移和多端协同详细说明,会在第七章中详细展开。 20 3)统一生态,原生智能 统一生态 统一生态具有愿景上的意义,打造智能联接,共建智能世界。 从设备角度来说,基于鸿蒙可以开发多种全场景终端设备;从应用角度来说,可以为鸿 蒙开发多种应用,运行在全场景设备上,满足智能家居、智慧办公等全场景使用要求。为此 鸿蒙系统提供全套能力来保证。 鸿蒙系统通过提供组件化、统一驱动框架、适配多芯片架构等能力,支持开发标准(如 手机、平板等)、轻量(如 TV、手表等)和小型(如智能门锁等)三类设备,可覆盖各种 智能终端。 传统设备之间的互联、互通和互操作是在应用层完成的,技术上没有问题,但实际中很 难形成生态,不同厂家设备间很难互联互通互操作。鸿蒙系统提供统一的分布式组件、统一 的模型、统一的互联业务互操作规范等能力和规范,在操作系统层面实现鸿蒙全场景终端设 备的统一互联,彻底解决设备互联的生态难题。 鸿蒙系统通过提供 HarmonyOS SDK、IDE 和开发者服务,以及一次开发、多端部署, 应用可分可合、自由流转、分布式服务等开放能力,让开发者实现一个工程、一套代码即可 开发出覆盖多种设备的应用,而且通过操作系统的原生能力即可实现应用间互操作、跨设备 流转等,真正做到应用开发出来即可融入整个生态。 21 原生智能 鸿蒙系统内置强大的 AI 能力,面向鸿蒙生态应用的开发,通过不同层次的 AI 能力开放, 满足开发者的不同开发场景下的诉求,降低应用的开发门槛,帮助开发者快速实现应用智能 化。 分层提供多样化的AI能力,满足开发者各类AI能力诉求 场景化 AI 控件:在 Speech Kit 和 Vision Kit 中为开发者提供高阶的、场景化 的 AI 解决方案。包括朗读、文档扫描、卡证识别、活体检测、AI 字幕、智能荐 图、智能填充等。 基础 AI 控件:将 AI 能力与系统基础控件深度融合,使系统控件具有文字识 别、图像分割、实体识别等 AI 能力,降低开发成本。 AI 基础能力:提供 TTS、ASR、OCR 等 AI 基础能力。 AI 子系统:提供高性能低功耗的端侧推理和端侧学习环境,保证芯片能力高 效有序提供。还提供大模型的相关能力。 意图框架提供了 HarmonyOS 系统级的意图标准体系,通过多维系统感知、大模型等能 力构建全局意图范式,实现对用户显性与潜在意图的理解,并及时、准确地将用户需求 传递给生态伙伴,匹配合时宜的服务,为用户提供多模态、场景化进阶场景体验。 22 Chapter 4 鸿蒙生态应用 开发能力全景图 - 1)赋能套件 - 2)鸿蒙开发套件 - 3)三方库 - 4)鸿蒙生态伙伴 SDK 市场 - 5)开发者支持平台 23 围绕开发者旅程,鸿蒙系统为开发者提供了端到端的开发能力支持。如下图所示,鸿蒙 系统为开发者提供了赋能套件、鸿蒙开发套件、三方库、开发者支持平台。具体能力全景图 如下图所示: 图 4-1:鸿蒙生态应用开发能力全景图 1)赋能套件 开发者了解和学习鸿蒙系统的各类资源,覆盖开发者全旅程,内容包含鸿蒙生态应用白 皮书、视频课程、Codelabs、UX 设计指南、开发指南、API 参考、技术文章、Samples 与 FAQ。 24 图 4-2:赋能套件全景图 鸿蒙生态白皮书:全面阐释了鸿蒙生态下应用开发核心理念、关键能力以及创新体验, 旨在帮助开发者快速、准确、全面的了解鸿蒙开发套件给开发者提供的能力全景和未来的愿 景。 视频课程:基于真实的开发场景,提供向导式学习,即学即练,多维度融合课程等内容, 给开发者提供全新的学习体验。 Codelabs:以教学为目的的代码样例及详细的开发指导,帮助开发者一步一步地完成 指定场景的应用开发并掌握相关知识。Codelabs 将鸿蒙生态应用开发技术与典型场景结合, 让开发者能够快速地掌握开发高质量应用的方法。同时支持互动式操作,通过文字、代码和 效果联动为开发者带来更佳的学习体验。 UX 设计指南:提供开发鸿蒙生态应用所需的 UX 设计规范、指导文档以及推荐的设计 资源,满足各种场景的设计要求,可以帮助开发者设计出体验一致的鸿蒙生态应用。 25 开发、测试及上架指南:提供系统能力概述、快速入门,用于指导开发者进行场景化的 开发。指南涉及到的知识点包括必要的背景知识、符合开发者实际开发场景的操作任务流 (开发流程、开发步骤、调测验证)以及常见问题等。 API 参考:面向开发者提供鸿蒙系统开放接口的全集,供开发者了解具体接口使用方法。 API 参考详细地描述了每个接口的功能、使用限制、参数名、参数类型、参数含义、取值范 围、权限、注意事项、错误码、返回值及规范化的示例代码等。 技术文章:针对新发布特性及热点特性提供详细的技术解析和开发最佳实践。 Samples:面向不同类型的开发者提供的鸿蒙生态应用开发优秀实践,每个 Sample 都 是一个可运行的工程,为开发者提供实例化的代码参考。 FAQ:开发者常见问题的总结,开发者可以通过 FAQ 更高效地解决常见问题。FAQ 会 持续刷新,及时呈现最新的常见问题。 赋能套件旨在为开发者提供全方位的支持,帮助开发者更加轻松地进行 HarmonyOS 应 用开发。开发者可以通过华为开发者官网和 IDE 帮助中心一站式获取 HarmonyOS 应用开 发文档。 2)鸿蒙开发套件 鸿蒙开发套件包含设计、开发、测试、运维套件以及 OS 开放能力集。通过鸿蒙开发套 件,开发者可以高效开发鸿蒙生态应用、元服务。 26 图 4-3:鸿蒙开发套件全景图 HarmonyOS 设计套件 Harmony Design 是面向全场景智能体验的设计系统,致力于构建一个和谐的数字世 界,其秉承万物归一、和谐共生、衍生万物的设计理念,为用户带来优秀的交互体验。设计 套件涵盖全场景多设备的家族化设计,其全栈式设计规范、丰富的设计资源、高效的设计工 具和插件库,以及垂类模板、体验标准等可以持续帮助开发者提升设计和开发效率,促进鸿 蒙生态发展。 全栈式设计规范:包括设计理念、人因研究、应用架构、人机交互、视觉风格、动效、 音效、振动、多态控件、界面用语、全球化、无障碍、隐私设计等。 丰富的设计资源:HarmonyOS 字体、HarmonyOS Symbol 和 HarmonyOS 音效库。 这些资源旨在简化开发流程,加速设计调用,使开发者能够轻松实现个性化和差异化的设计 效果。 高效的设计工具和插件库:在线设计工具、在线组件库、在线样式库、Symbol 插件、 主题换肤插件、规范检查插件 27 丰富的垂类模版:结合用户在多端设备上的历史交互习惯、各场景下的使用诉求等,进 行了一些设计方法的总结,从基础要求、响应式布局、增值体验进行场景化设计。 应用 UX 体验标准:从影响用户体验的各个维度定义了相应测试规范,规定了应用需达 到的基础体验要求,用于引导应用的设计与开发,以保证应用良好的使用体验,包含通用体 验标准和多设备体验标准。 开发套件 开发者在应用开发过程中使用到的产品集合,包含 HUAWEI DevEco Studio 以及 HUAWEI DevEco Studio 集成的性能调优、设备模拟、命令行工具和 SDK。 图 4-4:开发套件全景图 HUAWEI DevEco Studio:鸿蒙生态应用、元服务开发配套的集成开发环境(IDE), 提供了工程管理、代码编辑、界面预览、编译构建、代码调试等基础功能,同时还集成了性 能调优工具、设备模拟工具、命令行工具等帮助开发者解决特定领域的问题。 28 SDK:集成在 HUAWEI DevEco Studio 中,包含开发者可以使用的 API 定义以及调试 编译等基础的工具链。 请 访 问 https://developer.huawei.com/consumer/cn/download/ 获 取 最 新 的 HUAWEI DevEco Studio。 测试套件 包括测试标准和测试工具两个部分。 1. 测试标准 覆盖鸿蒙生态应用性能、功耗、稳定性、兼容性、UX、安全、分布式、游戏等测试规 范,帮助开发者解决测什么的问题。 表 4-1:测试标准覆盖范围 测试标准名称 测试标准覆盖范围说明 性能测试 任务启动时间、界面刷新帧率、应用内存占用及 CPU 占用等。 功耗测试 后台常驻任务/托管任务场景功耗、后台硬件器件资源/软件系统资 源占用场景功耗及分布式资源占用场景功耗。 稳定性测试 长时间运行故障率(App Crash/App Freeze)、长时间运行内存泄 漏及长时间运行踩内存等异常场景。 兼容性测试 应用和 OS 兼容、应用升级兼容、应用交互兼容及应用分布式兼 容。 29 测试标准名称 测试标准覆盖范围说明 UX 测试 应用 UX 规范一致性、控件截断、文字截断、布局变形、图片模 糊、黑边及白块等 UX 显示异常。 安全测试 基础安全、用户隐私、权限管理及跨设备安全。 分布式测试 流转交互一致性、跨端迁移功能及多端协同功能。 游戏测试 游戏音效、消息免打扰、帧率、屏幕点时延、GPU 使用率及后壳温 度等。 2. 测试工具 提供鸿蒙生态应用开发、调试、单元测试、集成测试、上架测试等各开发阶段所需的测 试工具集,支持手机、折叠屏、平板、智慧屏、手表、音箱等 1+8+N 设备,帮助开发者全 面高效测试。 图 4-5:鸿蒙生态应用测试工具概览 30 典型测试工具能力简介见下表: 表 4-2:典型测试工具能力简介 测试能力名称 简介 专项测试套件 覆盖性能、功耗、稳定性、兼容性、UX、安全共 6 项专项自 动化测试用例,基于测试标准实现自动化,并以测试服务化方 式提供。 测试框架 包括单元测试框架和 UI 测试框架, 并支持 ArkTS 语言,单元 测试框架提供支撑用例运行的基础能力,UI 测试框架提供 UI 控件查找、点击、检查、按键注入等模拟用户操作的 API。 性能测试工具 应用性能能效调优和测试工具平台;提供测试过程中实时采集 FPS、RAM、CPU、GPU 等性能数据的采集能力,同时提供性 能能效数据分析可视化分析等能力。 稳定性测试工具 应用 UI 随机压测工具,提供 UI 随机事件注入、控件级事件顺 序或随机注入、用户操作录制回放、异常日志捕获、可视化报 告生成等应用稳定性测试基础能力。 分布式设备录制回放 支持多设备多模输入操作录制,生成基于控件的脚本,开发者 添加检查点后形成自动化测试用例脚本,快速自动执行。 应用与服务体检 本地速测工具,支持兼容性、设计约束、性能等专项测试,无 需编写用例;集成于 HUAWEI DevEco Studio 一键式测试。 云测平台 云测平台提供性能、功耗、稳定性、兼容性、UX、安全自动化 测试能力,支持流转、万能卡片等鸿蒙系统关键特征自动化测 试,支持华为 1+8+N 多设备运行。 31 测试套件获取途径如下表: 表 4-3:测试套件获取途径 名称 获取途径 测试套件 华为官网访问路径: https://developer.huawei.com/consumer/cn/doc/harmonyos- guides-V5/app-testing-overview-V5 社区官网访问路径: https://gitee.com/openharmony/docs/tree/master/zh- cn/application-dev/application-test 运维套件 主要包括由 HUAWEI AppGallery Connect 提供的上架分发测试和运维分析两大能力。 1. 上架分发测试能力 提供多种上架分发测试能力,满足开发者在不同阶段的上架分发测试诉求。具体如下表 介绍: 32 表 4-4:上架分发测试能力介绍 分发阶段 简介 云测试/调试 快速获取目标机型,便捷远程测试,零脚本、低成本,通过自动化 测试快速发现应用的兼容性、性能、稳定性、功耗、安全等问题, 出具详细报告,复现与修复应用问题。 开放式测试 可以让开发者的应用在正式发布给所有用户前,面向特定用户群组 发布测试版本。参与测试的用户可以向开发者反馈,帮助开发者及 时发现技术问题或用户体验问题,以在应用/元服务正式上架前完 成改进,从而在此过程中尽可能地降低对用户的影响。 全网上架 开发者在开发测试验证完成后,正式提交应用上架申请,审核人员 审核通过后应用就会变为“已上架”状态,用户可在设备上搜索到 该应用/服务。 分阶段发布 在当前上架版本为全网发布时,开发者可以采用分阶段发布的方式 进行升级。采用分阶段发布,可以先向一定比例的用户发布更新的 版本,然后再逐步提升用户比例,最终实现全网发布。通过小范围 的版本更新,可以快速获取用户对新版本的反馈意见,降低全网发 布后版本出现问题的风险。 2. 运维分析 提供崩溃服务、性能管理及云服务监控,支撑开发者精准定位问题,同时支持多维度分 析,智能诊断问题并给出解决方案。 33 表 4-5:运维分析能力介绍 能力名称 简介 崩溃服务 帮助开发者快速发现、定位、解决应用崩溃(又称闪退)问题。无需开发 任何代码,即可实时查看可视化数据报告并检测到应用在每个设备上的运 行状态,及时快速发现或者定位、解决应用崩溃问题,从而确保应用稳定 运行,避免崩溃给用户带来糟糕体验。 性能管理 性能管理(APM,App Performance Management)服务提供分钟级 应用性能监控能力,检测应用在每个设备上的运行性能数据,帮助开发者 快速发现、定位、解决应用性能问题。 云服务监控 云服务监控是面向云函数、云数据库等云服务的质量监控解决方案,帮助 开发者快速发现、定位、解决云服务的业务层性能问题。 OS 开放能力集 OS 开放能力集通过 SDK 的形式对开发者呈现,提供应用开发所需的一系列系统开放能 力,包括 UI 框架、Ability、分布式服务、安全、方舟编译器、应用服务、基础软件服务、 系统服务等。 1. ArkUI 框架 ArkUI 是一套声明式开发框架,它具备简洁自然的 UI 信息语法、丰富的 UI 组件、多维 状态管理,以及实时多维度预览等能力,帮助开发者提升应用开发效率,并能在多种设备实 现生动而流畅的用户体验。其基础能力如下所示: 34 开箱即用的组件:提供丰富的系统预置组件,可以通过链式调用的方式设置组件的 呈现效果。开发者可以组合预置组件为自定义组件,通过这种方式将页面组件转化 为一个个独立的 UI 单元,实现页面不同单元的独立创建、开发和复用。 丰富的动效接口:提供多种绘制图形能力,同时开放了丰富的动效接口,开发者可 以通过封装的物理模型或者调用动画能力接口实现自定义动画。 多维度状态与数据管理:状态与数据管理作为声明式开发范式的特色,不同的装饰 器给开发者提供了清晰的页面更新渲染流程和管道。状态管理包括组件和应用状态 管理,合理使用两种状态管理机制,可以在不同场景中仅通过改变数据,自动刷新 UI。 API 扩展机制:通过相应的扩展机制,封装丰富的系统能力接口,开发者可以通过 相应的接口调用,实现高效的业务开发。 2. Ability 应用所具备能力的抽象,是应用程序的基本组成部分,主要包括组件生命周期回调、系 统环境变化通知、应用跳转、万能卡片开发等能力。具备如下核心的技术特征: 基于 MVVM(Model-View-ViewModel)模型:充分结合 ArkUI 的声明式 UI 特 性,应用更易于实现界面与逻辑解耦。 原生分布式:自带分布式接口,支持跨端迁移和多端协同。 支持多设备:Ability 实体与窗口实体解耦,可扩展窗口形态,适应不同的设备形态。 35 3. 分布式服务 由于具体场景的差异,以及技术演进、生态构建等各种复杂因素的存在,多设备之间的 通信方式各不相同(比如 WLAN、蓝牙、ETH、PLC、NFC、USB、Zigbee、红外、超声波 等),为了使开发者可以方便快捷地进行分布式开发,鸿蒙系统将跨设备交互涉及的关键能 力统一封装并开放给开发者。根据不同的使用场景,分布式服务具体可分为: 分布式软总线:支持多设备间协同实现异构组网,对开发者屏蔽不同通信介质和通 信协议带来的差异。分布式软总线通过软硬件协同,提供高吞吐、低时延、高可靠、 安全可信的通信通道,克服无线通信不可靠、不稳定的挑战,为开发者提供接近本 地化访问效果的通信能力。 分布式文件:基于分布式软总线,为应用跨设备文件相互访问提供完整解决方案。 分布式文件系统是一个直接构建在内核态,无中心、高性能的文件系统。提供了标 准的 POSIX 操作能力,使开发者可以像使用本地文件一样访问分布式文件系统。 分布式数据库:基于分布式软总线实现数据的分布式管理。用户数据不再与单一物 理设备绑定,跨设备的数据处理如同本地数据处理一样方便快捷,对外呈现一份全 局唯一的数据视图,让开发者能够轻松处理多设备下的数据存储、共享和访问。 分布式硬件:打破单一设备的硬件边界,是软件定义各种新产品形态和体验的“新 硬件”所需的关键技术。分布式硬件能够将硬件设备化整为零,形成“超级终端” 硬件资源池,供多个设备共享使用,真正达到软件定义硬件、设备间实现系统级融 合并灵活按需适应不同场景的目的。 融合感知:构筑在传感器技术和多模感知技术上的系统开放能力,提供了对设备、 环境、用户等的各类状态的感知 36 能力,例如设备的摆放姿态、操作行为、多设备间的空间拓扑关系、用户的移动状 态、位置信息,甚至是用户的情绪等。融合感知目前提供了六种不同的感知能力: 表 4-6:融合感知能力 分类 描述 空间感知 多设备空间感知模块,基于综合传感处理平台的空间感知原子算 法能力,提供多设备间的空间感知结果,包括设备间距离、角 度、方位关系等。 移动状态感知 移动感知模块,通过加速度传感器、陀螺仪、磁力计、气压计等 传感器及 Modem 基站信息,判断用户所处移动状态:乘车、步 行、乘坐直梯、自行车、走、跑、静止、快步走、高铁、步行、 电梯、相对静止、手持步行、躺卧、智能飞行、飞机、车载(不包 含地铁、火车、高铁等轨道交通和自行车之外的交通工具)、停 留、地铁。 设备状态感知 设备状态服务,通过加速度传感器、陀螺仪、接近光等传感器及 Modem 基站、Wi-Fi 扫描信息,判断用户手机状态:高精度静 止、中精度静止等。 手势感知 能够感知操作手势,比如拿起、翻转、靠近耳朵、摇一摇、旋 转、口袋模式、拿离耳朵、落腕、抬腕、招一招。 地理围栏 地理围栏服务,负责围栏监控及围栏进出事件上报。 时间线 时间线服务,根据移动感知的信息,区分家和公司的场景,保存 一天内用户停留和移动的行为,用于智慧画像。 37 4. 安全 鸿蒙系统提供严格的隐私保护和数据安全系统能力,保护消费者智能终端安全。具体的 安全隐私能力包括: 设备互信认证服务:为保证分布式系统的连接安全,实现用户数据在分布式场景下 各个设备之间的安全流转,需要保证设备之间相互正确可信,即设备和设备之间建 立信任关系,并能够在验证信任关系后搭建安全的连接通道,实现用户数据的安全 传输。设备之间的信任关系包括同账号设备之间的可信关系,以及点对点绑定的设 备可信关系。 用户身份认证:鸿蒙系统除提供数字密码、图形密码的传统身份认证方式,还提供 指纹识别、人脸识别等生物认证手段。根据不同认证方式的安全能力和特点,可应 用于相应的身份认证场景,如设备解锁、应用锁,移动支付等。同时,针对分布式 业务场景,为提升用户认证的便捷性,鸿蒙系统提供分布式协同认证能力,使用户 可便捷地以近端设备为入口完成用户身份认证。 应用程序隔离和权限管理:权限访问控制是基于 Access Token 构建的应用权限管理 能力,系统化地规范应用程序的行为准则与权限许可并强制执行。由于应用通过沙 箱机制彼此隔离,默认情况下,应用只能访问有限的系统资源。但应用为了扩展功 能,需要访问沙箱外的系统或其它应用的数据或能力,系统或应用也需要具备共享 数据或能力。为了保证这些数据或能力不被不当或恶意使用,Access Token 权限管 理机制提供了程序操作某种对象的许可,在应用层面,使用显式定义且经用户授权 的权限控制机制。 38 数据分级访问控制架构:为用户数据提供了全生命周期的安全防护措施,确保在每 一个阶段,数据都能获得与其个人数据敏感程度、系统数据重要程度和应用程序数 据资产价值匹配的保护措施。数据创建时即指定数据分级标签,基于标签关联全生 命周期的访问控制权限和策略。在数据存储时,基于不同分级标签,采取不同的加 密措施。在数据传输时,高敏感等级的数据禁止向低安全能力的设备上传递,同时 禁止低安全能力的设备发出指令控制高敏感等级的资源和外设。 数据防泄露保护:数据生命周期范围内,数据的存储、访问和传输过程中数据泄漏 风险比较大。数据防泄漏保护服务保证数据跨设备传输到另一设备后,依然具有相 应的访问管控能力。 5. 方舟编译器(ArkCompiler) 支持多种编程语言、多种芯片平台联合编译、运行而设计的统一编译运行时平台。支持 包括动态类型和静态类型语言在内的多种编程语言,如 ArkTS、TS、JS。 方舟编译器是鸿蒙系统作为手机、平板、电视、车机和智能穿戴等多种设备统一操作系 统的编译运行时底座。主要分成两个部分,编译工具链与运行时。编译工具链以 ArkTS/TS/JS 源码作为输入,将其编译生成为 ABC(ArkCompiler Bytecode,即方舟字节 码)文件。运行时直接运行字节码文件,实现对应语言规范的语义逻辑。架构图如下图所示: 图 4-6:方舟编译器 方舟编译器具备如下核心技术特点: 39 原生支持类型:目前业界引擎执行 TS 的方式是先把 TS 转化为 JS,再运行 JS 源码 来完成对应的语义逻辑。方舟编译器的编译工具链编译 TS 源码时,会分析推导 TS 的类型信息并将其传递给运行时。运行时直接使用类型信息在运行前预生成内联缓 存 ( Inline Cache ) 以 加 速 字 节 码 执 行 。 另 外 , TSAOT ( Ahead-of-Time ) Compiler,可以利用字节码文件中的类型信息,直接编译生成优化机器码,使得应 用可以直接运行优化机器码,获得高性能运行体验。 并发模型优化与并发 API:ECMAScript 规范没有提供并发语义表述,业界引擎,如 浏览器或者 Node.js,通常会提供基于 Actor 并发模型的 Worker API 来支持多线 程开发。Actor 模型下执行体之间不共享任何数据对象,通过消息机制进行通信。 因此 Web 引擎或者 Node.js 引擎的 Worker 都有启动速度慢、内存占用高这些问 题。针对这些问题,方舟编译器运行时已经实现了 Actor 实例中的不可变或者不易 变的对象(方法和字节码)的共享,较大程度地优化了 Actor 的启动性能和启动内 存。 简洁的并发 API:方舟编译运行时不只提供了业界通用的 Worker API,还提供了 TaskPool,作为并发 API 的增强。TaskPool 是一个支持优先级调度、工作线程自 动扩缩容的任务池功能库。开发者无需关心并发实例的生命周期,也无需关心任务 负载变化时需要创建或者销毁并发实例,简化了高性能多线程鸿蒙应用的开发。 安全:方舟编译器前端编译工具链将 ArkTS/TS/JS 程序预先静态编译为方舟字节码, 并且还提供了多重混淆能力的增强,有效地提升了开发者代码资产的安全强度。同 时出于安全的考虑,ArkCompiler 不支持 sloppy 模式的 JS 代码,也不支持 eval 等 运行动态字符串的功能。 40 6. 基础软件服务 鸿蒙系统为开发者提供了通用的基础软件服务,包括多媒体、通信、图形、文件存储、 升级、无障碍等,下面介绍三个常用的服务。 多媒体服务是指用户听觉、视觉信息的表达、存储和还原的处理过程。多媒体服务 确保在不同设备上运行的性能和体验,同时也为应用开发者提供统一的接口,让开 发者更多专注于业务开发,轻松使用多媒体资源。 相机服务:提供精确控制相机镜头,采集视觉信息的能力。 视频服务:提供听觉和视觉信息的解压播放和压缩录制的能力。 音频服务:提供音频播放、音频采集、音量管理和短音播放的能力。 图片服务:提供单张图片信息解压还原和压缩的能力。 数据服务:提供音频文件、视频文件、图片文件等数据高效管理能力。 通信服务为各种各样的终端设备提供多样信息的传递,鸿蒙系统提供业界主流和常 见的通信方式,涵盖短距离的无线通信(NFC、蓝牙和 WLAN 等)、长距离的蜂窝 通信,以及有线的以太网通信等服务,并且为其提供网络管理服务。 WLAN 服务:提供 WLAN 基础功能、P2P(peer-to-peer)功能和 WLAN 消息通知的相应服务,让应用可以通过 WLAN 和其他设备互联互通。 传统蓝牙:提供蓝牙版本 3.0 以下的传统蓝牙服务。 41 低功耗蓝牙:提供蓝牙版本 4.0 以上的低功耗蓝牙服务。 NFC 服务:提供近距离的、非接触式识别和互联技术,让移动设备、消费类 电子产品、智能设备之间可以进行近距离无线通信。 电话服务:提供无线蜂窝网络通信和 SIM 卡管理服务。 网络管理服务:提供数据连接管理、流量统计和网络协议栈服务。 图形服务提供图形渲染与显示输出的功能,内部通过对系统硬件资源的合理利用, 为系统提供流畅高效的显示体验。图形系统按功能维度分为渲染服务、绘制、动画、 效果、显示与内存管理、2D 图形库和 3D 图形引擎这几个子模块。 绘制:提供高性能的 2D 渲染服务。 动画:提供轻量的、链式的、物理连续的动画实现。 效果:提供高性能,基于物理的多类型的动效能力。 渲染服务:提供应用的界面显示(包括控件、动效等 UI 元素),将不同应用 渲染的图层进行合成,送显的过程。 显示与内存管理:提供了硬件合成、送显、Vsync 以及显示设备、Surface、 Bufferqueue 轮转、本地平台化窗口等能力。 2D 图形库:提供 2D 渲染库 SKIA 和轻量并行渲染等能力。 42 3D 图形引擎:提供 3D 图形场景管理、渲染系统、插件平台和物理引擎等能 力。 7. 系统服务 系统服务通过屏蔽硬件厂家接口差异,为应用提供统一的接口规范,从而使开发者便捷 地控制外设,其中包括电源、USB、泛 sensor 和位置服务等,下面介绍两个常用的服务。 泛 sensor 服务是应用访问底层硬件传感器的一种设备抽象概念。根据鸿蒙系统提供 的 Sensor API 查询设备上支持的传感器类型,并订阅指定传感器的数据,通过定制 相应的算法,开发各类应用,比如指南针、运动健康、游戏等。 订阅:提供数据订阅能力,系统将获取到的传感器数据上报给订阅者。 控制:提供设置传感器的数据采样间隔和数据上报间隔等控制能力。 服务管理:提供各类传感器列表的查询管理能力。 数据上报:提供数据接收、解析及分发的能力。 权限管控:提供传感器权限管控能力。 维测:提供传感器的调试和打点能力。 位置服务(LBS,Location Based Services)又称定位服务,是由移动通信网络和 卫星定位系统结合在一起提供的一种增值业务,通过一组定位技术获得移动终端的 位置信息(如经纬度坐标数据),提供给移动用户本人或他人以及通信系统。 43 全球导航卫星系统定位:提供 GNSS 定位服务的全能力,包含 GNSS 定位请 求管理、GNSS 芯片参数设置、GNSS 芯片参数上报订阅、GNSS 缓存等功能。 网络定位:提供基站、WLAN 和蓝牙等网络定位框架能力。 地理编码:提供地理编码转换服务框架能力。 被动定位:提供被动定位功能,允许应用进行被动定位,该种类型定位不会 主动发起 GNSS 定位或者网络定位,只有当其他应用有 GNSS 或者网络定位请求 时,被动定位的应用才会收到位置信息。 地理围栏:提供地理围栏的能力,支持围栏添加和删除、围栏事件订阅和取 消、围栏事件主动通知等功能。 区域管理:提供国家码、城市码、区域码等信息的检测能力,对外提供国家 码查询接口,主动监听国家码等信息变化并通知给应用。 8. 应用服务 应用服务开放能力是为鸿蒙生态应用开发者提供的商业化相关服务。依托华为终端成熟 商业化服务能力,使能鸿蒙生态应用的账号、消息通知、支付、广告、地图等各种业务快速 开通和实现。下面介绍一些常用的服务: 账号服务:支持用户在手机、平板等设备上,使用华为账号快速便捷地登录应用。 支持用户信息授权、一键授权登录、多账号切换、家长管控、数字遗产继承等。 44 推送服务:多种推送样式,支持大文本、Inbox 多行文本、带按钮等样式,帮助开 发者更好地提高消息对用户的吸引力。提供精细化人群划分的能力,可以根据用户 属性、特定标签、订阅主题,将用户群进行不同维度的细分,实现精细化运营。 应用内支付服务:提供支付服务,让开发者聚焦应用本身能力,更关注于应用创新。 大大降低支付渠道、全球化合规等开发引入和产品上线环节的投入,助力商业变现。 广告服务:开发者可以通过流量变现服务在应用内广告中获得更多收益;通过广告 标识服务,可以保护用户隐私,也可以帮助广告平台和三方监测平台合规地开展个 性化广告和转化归因。 地图服务:开发者可以同地图服务方便的提供地图呈现、位置导航、POI 搜索、路 径规划等能力,实现个性华为业务能力; 3)三方库 鸿蒙生态三方库,是在鸿蒙系统上可重复使用的软件库,可帮助开发者重用技术资产, 快速开发鸿蒙生态应用、元服务,提升开发效率。根据不同的开发语言分为两种: ArkTS/TS/JS 语言的三方库,可直接导入并使用。 C/C++语言的三方库,在应用开发中通过 NAPI 的方式来使用。 鸿蒙生态开源三方库发布与使用完整的流程如下图所示: 45 图 4-7:鸿蒙生态三方库管理 鸿蒙生态中心仓聚合了丰富的鸿蒙生态开发三方库,方便开发者一站式获取。个人/组 织贡献者将开发好的三方库通过 OHPM 发布到中心仓。 开发者通过如下方式即可方便快捷的使用三方库: 1. 应用开发者登录鸿蒙生态中心仓,通过分类和关键字搜索需要的三方库信息; 2. 应用开发者在应用开发时,通过 OHPM 包管理工具,将搜索到的三方库引入到应用 依赖清单中。 4)鸿蒙生态伙伴 SDK 市场 鸿蒙生态伙伴 SDK 市场帮助开发者获得更优质安全的闭源 SDK,与 SDK 伙伴、开发 者共建一站式的 SDK 选用平台,实现开发者、SDK 伙伴和华为共赢。鸿蒙生态伙伴 SDK 46 市场汇聚热门 SDK 助力开发者构建高品质鸿蒙原生应用。同时伙伴 SDK 市场通过 SDK 签 名认证、安全检测/审核、SDK 上架发布等机制保障 SDK 的安全、纯净、可控。 图 4-8:鸿蒙生态伙伴 SDK 市场 SDK 伙伴完成闭源 SDK 开发、签名后,可以提交到伙伴 SDK 市场。伙伴 SDK 市场对 SDK 进行安全检测/审核后,对 SDK 进行平台可信签名并发布到伙伴 SDK 市场。开发者可 以在伙伴 SDK 市场高效便捷的获取 SDK,支持开发者通过 IDE 查看、一键集成 SDK,也支 持到开发者联盟的伙伴 SDK 市场上查看、搜索、下载 SDK。 5)开发者支持平台 为了能更好地连接、服务开发者,开发者支持平台向开发者提供了以下能力,帮助开发 者快速成长并融入鸿蒙生态。 开发者社区:开发者技术交流平台,帮助开发者探索开发实践、交流心得经验、获 悉业界动态、答疑解惑。 开发者学堂:聚合官方鸿蒙生态课程,课程有慕课、微课、直播课、训练营等多种 形式,内容有入门、基础、进阶分级,面向开发者提供学、练、考、证一站式服务, 满足开发者不同阶段的学习诉求。 47 开发者成长计划:设置校园开发者计划(HSD)、布道师计划(HDE)等开发者成 长计划,助力不同类型开发者提升技能,帮助开发者相互连接、共享能力、彼此启 发、协同激励。 开发者技术支持:针对开发者在开发实践中的具体问题提供问题反馈平台,其中智 能客服提供 7*24 小时自助式智慧技术问答;工单系统由技术客服为开发者提供问题 处理和在线技术支持。 48 Chapter 5 高效开发与测试 - 1)典型开发场景 - 2)ArkTS 语言 - 3)ArkUI 框架 - 4)应用程序框架 - 5)HarmonyOS SDK - 6)集成开发环境 - 7)测试工具 49 1)典型开发场景 基于鸿蒙系统原生开发框架,开发者可以根据自己实际的业务情况选择: 独立开发一个应用 独立开发一个元服务 同时开发应用和元服务 开发者可以选择开发简单、场景聚焦的元服务,渐进迭代演进,按需组合元服务成为一 个复杂的应用。对于大型游戏类应用,可以直接开发鸿蒙生态应用,针对智慧屏、车机、手 表等设备,可以考虑开发元服务并提供万能卡片,让信息更加直接的呈现给用户。 2)ArkTS 语言 ArkTS 是鸿蒙生态应用的开发语言,使用.ets 作为 ArkTS 语言源码文件后缀。提供了 声明式 UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发高性能应用。 ArkTS 的重要特性之一是静态类型。相比于 TS 只在编译时进行类型检查,ArkTS 将编 译时所确定的类型应用到运行性能优化中。由于在编译时就可以确定对象布局,对象属性的 访问可以更加高效。 面向未来,ArkTS 会结合应用开发以及运行时的需求持续演进,引入包括并行和并发能 力增强、类型系统增强等方面的语言特性,进一步提升 ArkTS 应用的开发和运行体验。 50 鸿蒙生态应用开发者可以从官方开发者网站中获取 ArkTS 语言介绍,快速入门 ArkTS 语言。对于熟悉 TS 语言的应用开发者,官方开发者网站也提供了从 TypeScript 到 ArkTS 的 迁移指导,帮助开发者快速将已有 TS 代码重构为 ArkTS 代码。 3)ArkUI 框架 ArkUI 是鸿蒙生态原生的 UI 开发框架。主体结构如下图所示: 图 5-1:ArkUI 框架组成结构 51 ArkUI 框架提供给开发者两种开发方式:基于 ArkTS 的声明式开发范式和基于 JS 扩展 的类 Web 开发范式。声明式开发范式更加简洁高效,类 Web 开发范式对 Web 及前端开发 者更友好。 声明式开发范式 在声明式开发范式模式下,通过语言增强、渲染管线扁平化,最小化更新等手段,在功 能和性能方面对比类 Web 开发范式有了全面提升。采用声明式开发范式进行应用开发,相 同场景下,对比类 Web 开发范式代码更为精简,并且在性能、内存方面进一步优化提升。 另外 ArkUI 框架还提供了 API 扩展机制,通过此种机制进行封装风格统一的 JS 接口。下面 针对重点功能进行分别介绍说明。 1. 状态管理 声明式开发范式的核心思想是数据驱动 UI 变化,通过提供的状态进行数据管理,这里 状态管理指的是,管理数据发生变化时,框架能自动更新这些数据关联的最小范围的 UI。 2. 布局 布局指用特定的组件或者属性来管理用户页面所放置 UI 组件的大小和位置。在实际的 开发过程中,需要遵守以下流程保证整体的布局效果: 确定页面的布局结构。 分析页面中的元素构成。 选用适合的布局容器组件或属性控制页面中各个元素的位置和大小约束。 52 ArkUI 框架支持多种布局方式,如弹性布局、列表、宫格、栅格布局等。 3. 组件化 组件是 ArkUI 框架中的基础显示单元,一切 UI 显示的内容都是组件。ArkUI 框架提供 多种开箱即用的 UI 组件,如文本显示、图片显示、按键等,并提供了面向多种设备形态的 多态 UI 能力。另外,ArkUI 框架还提供了组合式扩展相应 UI 组件的机制,由 ArkUI 框架直 接提供的称为预置组件,由开发者定义的称为自定义组件,其具有以下特点: 可组合:允许开发人员组合使用内置组件、其他组件、公共属性和方法; 可重用:自定义组件可以被其他组件重用,并作为不同的实例在不同的父组件或容 器中使用; 配置化生命周期回调:生命周期的回调方法可以在组件中配置,用于业务逻辑处理; 数据驱动更新:由状态变量的数据驱动,实现 UI 自动更新。 4. 装饰器 自定义组件的场景中,通常会遇到需要动态传入不同的 UI 元素的情况,为了满足该场 景 ArkUI 框架同时提供了动态构建 UI 元素的能力。 @Builder:可通过 @Builder 装饰器进行描述,该装饰器可以修饰一个函数,此 函数可以在 build() 函数之外声明,并在 build() 函数中或其他 @Builder 修饰的 函数中使用,在一个自定义组件内快速生成多个布局内容。 @Style:声明式范式为了避免开发者对重复样式的设置,通过@Styles 装饰器可以 将多条样式设置提炼成一个方法,直接在组件声明的位置使用。@Styles 装饰器将 53 新的属性函数添加到基本组件上,如 Text、Column、Button 等,当前@Styles 仅 支持通用属性。通过@Styles 装饰器可以快速定义并复用组件的自定义样式。 @Styles 可以定义在组件内或组件外,在组件外定义时需在方法前添加 function 关 键字,组件内定义时不需要添加 function 关键字。 @Extend:为了满足开发者拓展原生组件的诉求,提供了@Extend 装饰器,可以 将新的属性函数添加到内置组件上,如 Text、Column、Button 等。通过@Extend 装饰器可以快速地扩展原生组件。 5. 动效 声明式范式中一大特点体现在动效的使用上,与传统开发方式不同,声明式的动画是由 数据变化驱动动画启动,而不再是直接控制动画的播放。UI 框架根据开发者的配置,自动 地进行动画执行,根据动画场景不同进行如下分类: 属性动画:组件的某些通用属性变化时,可以通过属性动画实现渐变效果,提升用 户体验。 显式动画:全局 animateTo 显式动画接口,指定由于闭包代码导致的状态变化插入 过渡动效,开发者可以在事件回调中通过显式动画对指定数据变化增加动画效果。 转场动画:转场动画包括页面间转场、组件内过渡转场和共享元素转场三种,通过 路由接口进行页面路由时,会触发动画的执行。 54 6. 事件交互 ArkUI 框架提供了很多交互事件,这些事件提供了不同的信息用于处理相关程序交互逻 辑,目前提供了 UI 组件事件以下几类事件: UI 组件事件:由 UI 组件内置交互逻辑触发,不同的 UI 组件有不同的 UI 组件事件, 比如 TextInput 输入框产生的 onEditChange 输入文本变更事件,List 列表组件产 生的 onScrollIndex 列表项滚动事件,这类事件属于非冒泡事件(非冒泡事件指的 是当一个组件上的事件被触发后,该事件不会向父节点传递);挂载卸载事件,当 UI 组件挂载到 UI 组件树或者从 UI 组件树上卸载时触发,典型的场景比如通过 if 渲 染语法控制 UI 组件的显隐状态,该事件属于非冒泡事件。 交互事件:点击事件,拖拽事件,焦点事件,触摸事件,按键事件,鼠标事件,手 势事件等。 7. 绘制能力 ArkUI 框架提供两种 2D 自定义绘制能力。一种是通过图形组合的方式,利用布局、绝 对定位和各种图形进行组合实现;另一种是通过绘制 API 在 Canvas 画布上进行绘制。 8. 混合开发 应用的场景是多样的,部分场景直接采用 UI 组件组合无法满足诉求,例如游戏、地图 这种需要依赖 C++ SDK 进行独立渲染,又或者开发相机、视频播放器这种需要独立纹理填 充的场景,因此需要框架提供一种能够在 C++侧进行自定义绘制的组件。ArkUI 框架提供了 XComponent 组件,支持加载应用动态库、NAPI 跨语言调用,进行 C++绘制能力的开发。 55 9. 跨平台 鸿蒙生态构建了 ArkUI 跨平台框架的核心设施,将相应的能力扩展到 iOS 和 Android 平 台上,后续会进一步拓展到更多的平台。开发者可以通过一份代码,结合相应的工具链,同 时生成多个 OS 平台的应用工程,并可编译出相应的应用程序,在相应的平台上高效的运行。 10. 分层能力开放 鸿蒙生态中,除了原生页面和框架本身跨平台能力外,应用还有很多场景是基于三方框 架构建。因此,ArkUI 框架提供了 ArkTS 声明式范式、FrameNode 机制和 C-API 多层次开 放的接口。其中基本应用界面可直接使用 ArkTS 声明式范式进行开发;三方框架可以使用 C-API 接口和 FrameNode 框架进行开发。针对不同框架特征,采取不同机制,达到更优秀 的性能效果。具体差异如下图所示: 56 图 5-2:不同类型框架对比 针对图中两种不同类型框架对接,提供 C-API 和 FrameNode 两种机制,进行框架接 入。当接入的三方框架存在 C 层数据处理情况或需要进行样式布局计算等逻辑操作时,针对 该场景,ArkUI 框架提供了 C-API 接口,以减少跨语言带来的性能损失。 图中左侧适用 C-API 进行接入的框架具备以下特征: 具有独立的开发范式和运行环境 框架自行管理 UI 树形结构,具有虚拟组件节点 57 对接系统原生组件进行渲染 基于 ArkUI 框架进行页面开发时,存在需要进行页面内容的动态变化的情况,根据 XML 或者 JSON 动态生成页面。针对该场景,ArkUI 框架提供了 FrameNode 接口,满足动态创 建、修改、删除组件的诉求。如图中右侧适用 FrameNode 进行接入的框架具备以下特征: 动态创建、添加子节点、删除、属性修改 支持内容自定义绘制 应 用 仅 通 过 DSL 解 析 后 , 直 接 对 接 原 生 组 件 进 行 渲 染 , 该 场 景 可 以 优 先 选 用 FrameNode 进行页面构建。 使用上述机制,可以更细粒度的进行组件控制和减少跨语言带来的性能开销,保障三方 框架高性能接入。 58 类 Web 开发范式 使用 HML 标签文件进行布局搭建,使用 CSS 文件进行样式描述,使用 JS 文件进行逻 辑处理。UI 组件与数据之间通过单向数据绑定的方式建立关联,当数据发生变化时,UI 界 面自动触发更新。此种开发范式,对 Web 前端开发者更为友好。 类 Web 范式的整体接口采用与传统 Web 页面开发相似的设计理念,采用 HML、CSS 与 JS 三种类型的文件进行页面开发,开发者可以基于此范式方便地进行 UI 构建,同时提供 数据绑定机制,支持通过 JS 进行数据更新,进而更新 UI。 HML 语法:是一套类 HTML 的标记语言,通过组件、事件构建出页面的内容。页面 具备数据绑定、事件绑定、列表渲染、条件渲染和逻辑控制等高级能力。在 HML 文 件中不仅可以进行架构描述,也可以进行数据绑定,通过{{}}方式进行数据绑定后, 也需要在 JS 文件中进行数据的定义,运行时将使用 JS 文件中提供的数据 content 进行替换。 CSS 语法:CSS 是描述 HML 页面结构的样式语言。所有组件均存在系统默认样式, 也可在页面 CSS 样式文件中对组件、页面自定义不同的样式。ArkUI 开发框架提供 标准 CSS 语法的核心功能集,满足应用开发者的诉求。 JS 语法:在类 Web 开发范式中,提供了一系列的全局方法与全局对象,进行数据 操作与逻辑处理。 框架后端采用 C++开发语言实现,提升了框架的运行性能,使用方舟编译器运行时作 为 JS 引擎,具有更优的 JS 执行性能,同时还提供了一套完整的包含 UI 组件、布局机制、 动画能力的渲染框架,通过渲染引擎对 UI 元素进行绘制。 59 类 Web 范式实现层面可以进一步部署到轻量化的设备上。通过轻量化设计的思路,将 JS Framework 下沉到 C++层,以减小 JS 的内存占用,使用 C++进行更为严格的内存分配 管理,并采用更为轻量的 JS 引擎,UI 部分采用轻量的 UIKit 并结合轻量图形引擎最终实现 百 K 级别设备的支持,从而在轻量化设备上可执行的应用,也可以在硬件规格更高的设备上 执行,而无需重新开发。这也就是采用类 Web 开发范式的优势所在,采用统一的开发范式, 开发者无需关心具体运行时的前端框架、JS 引擎与后端 UI 组件,系统会根据运行平台不同, 采用最佳的模块,保障应用在不同平台都可具有出色的运行性能。具体的实现原理如下图所 示: 图 5-3:类 Web 开发范式 60 可视可说 可视可说框架提供“系统级”和“应用级”两种实现方式。其中,“系统级”无需应用 适配自动支持标准控件文本的语音操控功能;“应用级”接入方式允许开发者对控件场景、 角标、别名、个性化播报等元素进行适配,从而提供良好的用户体验。应用级和系统级两种 实现是互补关系,应用级优化用户体验,系统级保证覆盖率。 图 5-4:可视可说框架 1. 系统级 应用使用标准控件开发,无需额外适配,自动识别标准控件界面文本和位置执行,天然 支持界面文本可视可说基础体验。 2. 应用级 系统级基础体验无法满足体验目标时,应用可以按照业务特征进行灵活定制适配,以此 获得可视可说良好体验。 61 3. 语音交互生命周期 可视可说分为信息获取和识别执行,信息获取模块基于界面变化用户监听界面变化获取 信息热词,识别执行模块将信息热词传递到语音系统进行 AI 识别。 图 5-5:单次语音交互生命周期 语音唤醒:语音助手唤醒后,发送建立连接给前台应用,应用收到请求后启动可视 可说初始化。 信息获取 分配角标(可选):应用反馈界面需要展示的角标数量给智慧语音。 更新角标(可选):界面变化时,自行管理展示角标刷新。 获取信息:智慧语音获取界面热词信息,包括文本,图标和角标信息。 识别执行 62 语音识别:智慧语音系统根据用户语音和界面信息热词,识别出可视可说意 图和指令。 执行指令:收到可视可说意图和指令触发执行。 隐藏角标:通知应用隐藏界面角标(隐藏角标动作也由适配应用自己完成)。 语音结束:语音助手释放可视可说,发送解除绑定给前台应用,应用收到解除连接 后停止可视可说相关动作(比如角标未隐藏则隐藏角标信息)。 4)应用程序框架 应用程序框架定义了应用程序的模型与结构。鸿蒙系统上的应用模型称之为 “ Stage 模型”。 应用程序 框架定义 了应用的 全生命周 期。鸿蒙 系统是一 个 支 持 1+8+N 多设备的统一操作系统,其生命周期的管理和定义就更为复杂且重要。Stage 模型主要特点包括: 规范化后台进程管理:为了保障用户体验,鸿蒙系统上的运行环境对后台进程进行 了有序管理,当应用程序处于后台状态时,不应该处于高度活跃状态。为此,系统 定义了四类后台任务: 短时任务:应用退到后台之后,系统提供了一个短期的可运行时间,应用可 以进行数据保存的操作。超过这个时间,任务将被冻结。 长时任务:对于音乐播放,投屏,导航这类场景,系统提供了长时任务的能 力。长时任务的类型是由系统定义的,应用应当根据实际需要来使用,不应当过 度滥用。 63 延时任务:对于一些实时性要求不高的场景,系统提供了延时任务。这种情 况下,会由系统统一周期,对齐多个应用的任务激活时间。 托管任务:这类任务是由系统完成,完成之后再通知到应用。例如,下载, 提醒和定位这类场景。 原生支持分布式:鸿蒙系统的诞生很大程度上就是为了解决多设备时代的交互问题。 鸿蒙系统的应用框架从设计之初就包含对于分布式的考虑。 支持多设备的统一窗口管理:过去,面向不同的设备诞生了不同的操作系统。例如, 面向 PC 设备的操作系统,面向移动设备的操作系统,以及面向穿戴设备的操作系统 等。由于这些系统诞生在不同的时代,面向不同的屏幕形态,因此其窗口系统存在 很大的差异。为更好的管理这些差异性,鸿蒙系统设计了统一的窗口系统,给开发 者提供统一的编程模型。 组件共享及面向对象:多个应用组件在运行时共享同一个虚拟机引擎,从而减少复 杂应用运行内存的占用。采用面向对象的开发方式,使得复杂应用代码可读性高、 易维护好、可扩展性强。 逻辑与界面解耦:窗口部分可单独销毁和重建,窗口与应用组件可跨设备运行,应 用组件可在不启动界面的情况下响应请求。 灵活扩展机制:支持万能卡片、输入法、快捷开关、分享、壁纸、长时任务等应用 开发。 在鸿蒙系统中,Ability 是应用程序框架中最基本的抽象单位,是能够完成独立功能的 应用组件。在 Stage 模型中,Ability 分为两大类: 64 UIAbility:应用的主入口,对应桌面上的图标。一个 UIAbility 实例对应一个任务。 一个 UIAbility 中的通常包含多个 ArkUI 页面。 ExtensionAbility:ExtensionAbility 有多个具体的子类型,例如:FormExtension 用 来 开 发 万 能 卡 片 , InputMethodExtensionAbility 用 来 开 发 输 入 法 等 。 ExtensionAbility 正如其名称那样,在鸿蒙新的版本,面向不同的设备,可能会持 续扩展和增加。 下图展示了 Stage 模型的主要结构: 图 5-6:Stage 模型相关概念 针对大型应用开发,从开发态到部署态,鸿蒙系统都提供模块化解耦的方式,开发团队 都是以模块化能够便捷的构建出可以复用的软件组件,也能够轻松的完成彼此间的分工协作。 开发者可以通过 HUAWEI DevEco Studio 工程中创建多个 Module,以 Module 为单 位进行分工。每个 Module 既可以包含业务代码,也可以包含资源文件。针对不同的部署态 需求,模块的编译结果有三种目标形态: 65 HAR(HarmonyOS Archive):这是一种中间编译产物格式,它最终将被编译合 并到 HSP 或 HAP 格式的包中。 HSP(HarmonyOS Shared Package):这是一种新增的编译产物。HSP 使得模块 可以以运行态复用的形式共享。相较于 HAR,当有多个 HAP 包依赖与同一个 HSP 时,最终的打包产物中,HSP 只会存在一份。 HAP(HarmonyOS Ability Package):HAP 包是鸿蒙应用可单独安装的容器包。 借助鸿蒙统一开发框架的能力,同一个 HAP 包可以支持在多个设备上运行。但是当 设备差异较大时(例如手机与手表),开发者可以为不同的设备设计不同的 HAP 包。 在上架时,通过同一个 App 包来包含多个 HAP 包。这样可以达到一次开发上架, 多端分发、部署的效果。 5)HarmonyOS SDK HarmonyOS SDK 是为了支撑 Harmony OS 应用开发而提供的一系列开放能力,包括 API 接口定义,资料文档,样例代码,基础工具包等。HarmonyOS SDK 是鸿蒙生态建设的 重要组成部分。 66 图 5-7:HarmonyOS SDK 开放能力 开放能力 Kit 为了方便开发者检索,使用开放能力,HarmonyOS SDK 将开放能力按照特定业务属性 划分到 Kit 中。Kit 是一个功能技术内聚的能力集合,可以支撑开发者完成一个特定场景的功 能开发。 HarmonyOS SDK 开放能力,由一系列 Kit 开放能力组成,所有对三方生态开放的开放 能力均要归类到一个 Kit 中。当前已提供 90+ Kit,Kit 分为 6 大类别: 应用框架(APP Framework):提供给应用程序开发的基础设施,如语言运行时、 ArkUI、程序框架等提供的相关开放能力。 系统(System):通信、安全、驱动程序、DFX、诊断和测试等相关的开放能力。 67 媒体(Media):指用于存储、处理和传输视频、音频、图片等多媒体内容的相关开放 能力。 图形(Graphics):指用于渲染、显示和交互的图形技术,包括 2D 和 3D 图形、动画、 游戏等相关的开放能力。 应用服务(APP Services):指用于推送消息,认证登录,支付等开放能力。 AI(Artificial Intelligence):人工智能领域,包括机器学习、深度学习、自然语言 处理、计算机视觉等相关的开放能力。 图 5-8:Kit 分类图 开放能力的检索和使用 在华为开发者网站上,开发指南和 API 参考,均以 Kit 的形式呈现,开发者可以查询某 个 Kit 的相关资料。 68 在开发工具 DevEco 上,提供 Kit 化导入方式,支持导入对象语法补齐,使用 Kit 开放 能力更方便。 方舟工具链 传统的 JS 程序开发中,应用程序往往带的是经过前端打包工具处理过的 JS bundle 文 件,在程序运行阶段进行解释执行;这种运行方式需要设备有强大的计算能力。鸿蒙系统能 够支持的设备范围广泛,覆盖从低端的 IoT 设备到高性能手机设备。采用传统的方式,无法 保证多类型设备的体验一致性。 在鸿蒙开发环境中,应用代码是通过前端编译器完成编译的。前端编译器按照语言规范 解 析 源 代 码 , 编 译 成 方 舟 运 行 时 能 够 理 解 的 二 进 制 字 节 码 格 式 ( ABC , ArkCompiler ByteCode),最后打包到应用中。前端编译器是鸿蒙应用框架与其它 JS 应用框架主要的差 别之一。下图展示了两种编译运行方式的差别,方舟前端工具链把解析源码、编译字节码的 过程从运行时迁移到编译时,降低运行时的开销。 图 5-9:普通 JS 运行时与方舟编译运行时比对图 69 前端流水线在发起编译时,进行工程参数解析,依赖分析,语法校验,语法转换,代码 编译等各个编译动作的编排。前端编译器负责编译流水线中源代码编译,提供对应的触发接 口给编译流水线。 下图为鸿蒙生态应用的编译流水线流程: 图 5-10:编译流水线 配置解析:解析 IDE 工程中的配置文件,解析程序组件,入口组件,组件包名,代 码位置等信息。 依赖分析:根据代码中的 import 等语句,进行各个代码的依赖关系分析。 UI 语法转换:对 UI 中的各种语法糖进行转换。 代码编译:输入转换后代码,解析编译,输出 ABC 字节码文件。 应用打包:获取应用的资源,ABC 字节码文件,应用配置文件等,使用用户签名进 行应用打包,输出应用包。 前端编译器负责将 ArkTS 代码编译成方舟字节码 ABC,鸿蒙生态应用编译流程中,分 为两种编译模式。分别是 bundle 和 esmodule 编译模式。两者的区别主要在源码文件的处 理上,bundle 编译把各个有依赖关系的源代码通过打包方式打成一个 bundle 文件,然后 通过前端编译器编译成 ABC 字节码文件;而 esmodule 编译是保持用户写的 ArkTS 模块不 变,通过前端编译器编译成 ABC 字节码文件,字节码文件内保留各个模块的代码段,依赖 关系等信息;当前推荐开发者使用 esmodule 模式,保持模块语义。 70 前端编译器架构 前端编译器是根据输入的 ArkTS 源码,进行词法,语法解析、转换、编译、输出字节码 文件;在这个过程中会提取代码中标注的类型信息,进行类型检查,类型绑定,最终作为元 数据生成到字节码 ABC 文件中。 图 5-11:前端编译器架构 解析:前端编译器读取 ArkTS 源码,进行词法,语法解析,输出抽象语法树(AST) 转换:前端编译器识别语法糖,转换成基础语法 编译:根据抽象语法树,生成对应的中间表示(IR) 输出:收集 IR,字符资源,常量,等各种元素,按照 ABC 文件格式生成字节码文件 优化:读取 ABC 文件中的字节码信息,生成 IR 表示,进行优化处理,重新生成更 优的字节码文件。 6)集成开发环境 HUAWEI DevEco Studio 是面向鸿蒙生态的集成开发环境,提供了一站式的鸿蒙生态 应用、元服务开发能力,详细能力如图所示。 71 图 5-12:HUAWEI DevEco Studio 集成开发环境 工程管理 提供基础的工程管理能力,包括工程向导,工程模板,鸿蒙视图,样例导入等,并提供 模板市场,支持扩展丰富的模板。开发者可以方便地安装和更新鸿蒙 SDK,利用模板创建鸿 蒙生态应用、元服务,使用鸿蒙视图聚焦到关键文件及配置,也能导入样例快速学习了解鸿 蒙 API 的用法: 工 程 向 导 : 开 发 者 基 于 模 板 , 方 便 地 创 建 出 工 程 ( Project ) , 应 用 模 块 (Module),库模块(Library),Ability,万能卡片(Service Widget)等开发 态元素,快速得到鸿蒙生态应用开发所需的项目结构。 鸿蒙视图:通过鸿蒙视图,可以过滤掉应用开发中无需特别关注的文件,如工具自 动生成的文件,聚焦鸿蒙开发的代码文件及配置文件。 模板市场:模板市场提供了丰富的工程模板,支持模板的发布及更新,HUAWEI DevEco Studio 可以检测到新版本并更新。开发者也可以通过模板市场分享自己开 发的工程模板,供其他开发者下载使用。 72 样例导入:样例提供了常用鸿蒙 API 的使用指导,开发者可以将样例工程导入到 HUAWEI DevEco Studio,学习常用 API 的使用,也可以基于样例工程快速开始开 发。 代码编辑 针对 ArkTS 语言及 ArkUI 框架,HUAWEI DevEco Studio 提供了代码补全、跳转、校 验、重构、高亮、折叠、格式化等一系列编辑功能,辅助开发者便捷地阅读代码,高效地编 写代码,实时地纠正代码错误。相较于传统的代码编辑,HUAWEI DevEco Studio 还结合 了人工智能技术,根据待补全位置的上下文代码特征进行预测和推荐,使补全项更精准,推 荐内容更完整,开发人员可以更快速地完成鸿蒙生态应用、元服务开发。同时,HUAWEI DevEco Studio 内置鸿蒙生态应用、元服务开发编程规范校验功能,实时提示代码错误,支 持快速纠错,可高效地将建议修复结果应用于代码中。 界面预览 在开发过程中,开发者需频繁修改界面代码,查看对应的呈现效果,确保开发与实现目 标一致。传统的开发模式下,开发者每次修改代码后,执行编译构建,并推送应用到设备上 重新运行,才能查看到界面的呈现效果,整个过程冗长,产生较大的时间浪费。HUAWEI DevEco Studio 提供了界面预览能力,使开发者更方便快速地调测应用界面,大幅提升界面 开发效率。 73 图 5-13:界面预览全景 页面预览:可快速查看应用/服务中 UI 代码的呈现效果。 卡片预览:可查看多种卡片规格、多种卡片尺寸(最小/标准/最大)的呈现效果。 组件预览:可独立查看组件的呈现效果,支持开发者注入组件参数,灵活查看组件 在不同上下文中的预览效果。 自定义预览 profile:预览 profile 是设备显示能力的抽象定义,典型的 profile 信息 有设备名称、 设备类型、屏幕分辨率、屏幕密度、语言、亮暗模式、横竖屏状态等。 通过自定义预览 profile,开发者能自由组合设备显示能力,查看 UI 代码在不同设备 上的呈现效果。 快速预览:UI 代码和预览效果可双向定位;组件属性修改,无需保存和编译,快速 呈现效果;修改 UI 代码,保存后秒级刷新;预览界面支持点击、滑动、键盘输入等 交互能力。 74 编译构建 HUAWEI DevEco Hvigor 是一款华为自研轻量级编译构建工具,将编译操作进行任务 化管理,为开发者提供自动化的构建服务。其具备强大的构建能力,支持多种语言(ArkTS、 C/C++等)、多种产物类型的快速编译,最终生成 HAR/HSP/HAP/App 包。Hvigor 具备 以下特点: 高效编译:充分利用系统资源,并行执行编译请求,提升编译效率;综合历史信息, 精确增量检查,高度复用往次构建产物,缩短编译时长;优化编排任务序列,异步 化执行编译操作,减小等待间隙,加速构建流程。 多目标构建:具有多目标构建能力,允许开发者灵活选择源码文件、资源信息、部 署设备等应用要素,形成多种组合。通过简易配置,匹配自定义构建目标,一键打 包生成不同产物,实现“一套代码,多种产物”。 灵活扩展:支持开发者自定义编写构建任务,匹配自身业务需求,扩展编译构建流 程。 独立运行:拥有完善的命令行工具,兼备良好的跨平台能力,可以脱离 HUAWEI DevEco Studio,独立运行在 Windows、Mac、Linux 等操作系统上,支持不同环 境下的流水线搭建。 可视化分析:构建全流程任务耗时数据展示能力,展示任务时长、任务线程、日志、 历史记录等,通过可视化的方式查看构建任务流程,帮助开发者进行构建瓶颈优化。 75 代码调试 在开发过程中,代码调试是使用频率最高的功能之一,开发者可以使用断点跟踪或日志 分析,快速定位代码缺陷。HUAWEI DevEco Studio 提供了常用的代码调试功能,如设置 断 点 ( 普 通 断 点 、 条 件 断 点 、 异 常 断 点 、 符 号 断 点 等 ) 、 断 点 跳 转 ( Step Over/Into/Out)、变量值查询、表达式计算、调试堆栈、命令行工具等。此外,基于鸿蒙 系统的特点,还提供了以下功能,进一步提升效率: 跨语言调试:支持 ArkTS 和 C/C++两种语言同时调试,并支持断点从 ArkTS 语言 跳转到被调用的 C/C++语言; Hot Reload:修改代码后,无需重新创建调试会话和启动鸿蒙生态应用、元服务, 即时生效,大幅缩短调试时间。 多维日志:查看系统消息日志时,可根据设备、进程、日志级别以及自定义的规则 灵活过滤,快速筛选,协助定位代码缺陷。在分布式场景下,可以同时查看多个设 备的系统消息日志。其中特别重要的异常日志在独立的窗口呈现,避免淹没在大量 系统消息日志中。 ArkUI Inspector:支持显示视图的布局及组件关系,查看组件属性列表,过滤组件 及属性,用于定位真机上的 UI 显示问题。 反向调试:支持通过反向单步,反向 continue 等操作,查看历史快照,线程,栈帧, 变量等信息。通过反向时间线界面,查看多线程场景下的快照时序,用于定位偶现 问题以及多线程并发的资源竞争等问题。 76 多线程问题智能检测:提供 ASan/TSan/方舟等多线程智能检测能力,一键式触发 应用问题检测,提供详细的问题定位报告,支持源码跳转。 性能调优 应用的运行性能至关重要,一旦出现卡顿、发热、电量消耗过快等问题,便会导致体验 急速下降,造成用户流失。性能调优是鸿蒙生态应用开发阶段中非常重要的一环,然而性能 优化过程充满挑战,需要开发者了解应用程序框架、系统、硬件各方面知识,并对多维度性 能数据进行综合分析。为了降低性能调优技术难度,HUAWEI DevEco Studio 推出了场景 化调优工具 DevEco Profiler,提供以下关键能力: 场景化调优模板:针对各类典型场景的性能问题,提炼出对应的场景化调优模板, 自动采集相应维度性能数据。常用场景化调优模板如表 5-1 所示。 模板自动推荐:根据实时监控观测到的性能异常事件,自动推荐对应的场景化模板。 高效数据分析:关联分析不同维度性能数据,结合同一时刻的代码调用栈,快速分 析代码和性能问题之间的因果关系。 一键定位代码行:分析结果中代码堆栈并一键跳转至编辑器中的对应代码行。 表 5-1:常用场景化调优模板 模板名称 用途 Time Insight 耗时分析模板:通过周期性采集调用栈,识别 CPU 耗时高的热点 代码段,用于分析卡顿、CPU 占用高、运行速度慢等问题。 77 模板名称 用途 Allocations Insight 内存分析模板:录制和分析内存分配记录,用于分析内存峰值高, 内存泄漏,内存不足导致应用被强杀等问题。 CPU Insight CPU 分析模板:录制 CPU 调度事件、线程运行状态、CPU 核频 率、Trace 等数据,可用于分析卡顿、运行速度慢、应用无响应等 问题。 Energy Insight 能耗分析模板:录制和分析能耗异常事件、硬件资源使用记录、功 耗关联的系统状态,可用于分析电量消耗过快的问题。 Launch Insight