鸿蒙生态应用开发白皮书 V2.0
鸿蒙生态应用核心技术理念
HarmonyOS 应用的两种形态
App:需要安装再使用
元服务:可以在服务中心发现并使用,也可以通过扫一扫之类的场景主动推荐给用户使用,并且无需安装,秒开体验,还可以以“万能卡片”方式固定在手机屏幕位置上展示服务内容
一次开发,多端部署
多端开发环境(DevEco Studio)
多端双向预览:提供多种设备的双向预览能力,支持 UI 代码和多设备上预览效果的双向定位修改
分布式调试:支持跨设备调试,通过断点和调试堆栈来跟踪不同设备之间的交互,用于定位多设备互动场景下的代码缺陷
分布式调优:支持多设备分布式调用链跟踪、跨设备调用堆栈缝合,同时采集多设备性能数据并进行联合分析
超级终端模拟:多个模拟器和真机设备可以自由组成超级终端来做分布式调试和测试
低代码可视化开发:提供 UI 可视化开发能力,支持自由拖拽组件和可视化数据绑定,可快速预览效果
多端开发能力
多端 UI 适配:通过虚拟像素vp对分辨率进行抽象,统一单位,对设备屏幕水平宽度抽象出四种尺寸:xs、sm、md、lg,分别对应智能穿戴设备、手机和折叠屏手机折叠状态、平板和折叠屏手机展开状态、智慧屏,鸿蒙为适配不同屏幕提供的 UI 布局方式主要分为自适应布局和响应式布局,自适应布局多用于解决页面各区域内的布局差异,响应式布局多用于解决页面各区域间的布局差异
交互事件归一:系统将不同设备的输入映射成归一交互事件,如触摸、键盘、鼠标等
设备能力抽象:提供接口查询设备是否具备“摄像头”、“蓝牙”等能力,以方便适配不同设备的软硬件能力
多端分发机制
开发多设备应用时,只需要一套工程,一次打包出多个 HAP,统一上架,即可根据设备类型按需进行分发
多设备按需分发:Moudle 编译出来的 Hap 包,可以是多种不同设备共用的,也可以是某一种设备才能使用
多入口按需分发:基于场景和用户意图拉起元服务,实现“服务直达”
可分可合,自由流转
可分可合:开发时按业务拆分为多个 Moudle,打包时可以将多个 Moudle 生成的 HAP 包组合成一个 App Pack 进行上架,也可以组合出多个 App Pack 分别上架
自由流转:可分为跨端迁移和多端协同两种情况,分别是时间上的串行交互,例如多个不同设备间协同办公,和时间上的并行交互,如分布式游戏场景,手机作为手柄,智慧屏作为游戏主机和屏幕
统一生态,原生智能
统一生态:系统提供 WebView、ArkUI 框架和 Xcomponent 能力来支撑三种类型的跨平台框架的接入
原生智能:鸿蒙系统内置 AI 能力,并将部分开放给开发者使用,可实现实时语音识别、OCR 文字识别、端侧推理和学习等能力,并能够实现对用户显性与潜在意图的理解,将用户需求传递给开发者
鸿蒙生态应用开发能力全景
高效开发与测试
赋能套件
提供了大量学习资源,如白皮书、文档、指南、设计资源、代码样例和 FAQ 等
鸿蒙开发套件
设计:包含设计规范和设计工具等
开发:DevEco Studio 提供的工程管理、代码编辑和调试、界面预览、编译构建、模拟器、性能优化、命令行工具等
测试:检测应用性能、功耗、稳定性、兼容性、UX显示、安全等情况,并提供测试工具来做性能测试、单元测试、UI测试等
运维:AppGallery Connect 提供了上架分发测试和运维分析
分发测试包含云测(多设备)、面向特定用户群的开放式测试、全网上架、分阶段发布,让一定比例用户先使用新版本,然后再放开
运维分析提供线上崩溃问题记录、APM 性能管理服务和面向云函数和云数据库等云服务监控
OS 开放能力集
ArkUI 声明式开发框架,提供了丰富的 UI 组件和动画能力,并且有多维度状态与数据管理,能做到仅改变数据就自动刷新UI
Ability 包括组件生命周期回调、系统环境变化通知、应用跳转等能力,可通过 MVVM 实现界面与逻辑解耦
分布式服务:支持多设备间协同异构组网和跨设备互相访问文件和数据
安全:在多设备之间共用同账号登录,并通过密码、指纹、人脸识别等手段进行身份认证,在应用程序上通过沙盒机制隔离数据和资源访问权限的同时也具备向其他应用共享资源能力
方舟编译器(ArkCompiler):将 ArkTS/TS/JS 源码编译生成 ABC(ArkCompiler Bytecode)方舟字节码文件后可运行在不同芯片设备,编译器还提供了多重混淆能力
基础软件服务:提供了相机、音视频、图片处理和图形绘制、文件管理等多媒体服务,以及 NFC、蓝牙、WLAN 等通信服务可以不同终端设备间提供信息传递
硬件服务:屏蔽硬件厂家接口差异,为应用统一接口规范使用硬件功能并提供相关数据,如指南针、陀螺仪、定位等服务
App Service:华为提供了多种云服务,如华为账号一键登录、推送、华为支付、广告平台和数据分析服务
三方库
开通过 OHPM 包管理工具从鸿蒙三方库中心仓来搜索和下载三方库
ArkTS/TS/JS 语言的三方库,可直接导入并使用
C/C++ 语言的三方库,通过 NAPI 的方式来使用
开发者支持平台
华为提供了开发者社区、开发者学堂,并提供了成长计划和技术支持等方式来服务开发者
典型开发场景
开发独立应用或元服务,或者同时开发应用和元服务
设计
提供设计规范、设计资源和设计工具
ArkTS 语言
在 TS 语言基础上引入静态类型,声明式 UI 以及状态和数据管理等能力
ArkUI 框架
ArkUI 提供两种开发方式,分别是基于 ArkTS 的声明式开发范式和基于 JS 扩展的类 Web 开发范式,前者更加简洁高效,后者则对 Web 开发者更友好,它使用 HTML、CSS、JS 开发,而声明式开发性能方面相对更好,并且代码更精简,性能也更好,下面介绍声明式开发范式的重点功能
状态管理:核心思想是数据驱动 UI 变化,状态管理从生效范围分为应用范围和组件范围,应用范围的数据以 AppStorage 为中心进行管理,组件范围的数据通过装饰器的方式来管理
布局:分析页面中元素构成和布局结构,选用合适的布局容器组件或属性来控制页面中各元素的位置和大小约束
组件:提供各种 UI 组件,如文本、图片、按钮等,控件在不同设备上形态也可能会不同
装饰器:框架提供了动态构建 UI 元素的能力,可通过 @Builder 在 build() 函数外声明修饰构建 UI 组件的函数,可以通过 @Style 为组件定义能用样式,通过 @Extend 扩展系统组件,添加属性和函数
动效:除了提供主动启动动画和页面转场动画,还提供了声明式动画,由数据变化驱动动画启动
事件交互:包括控件挂载、卸载、控件点击、列表滚动等交互事件
绘制能力:提供组合控件绘制页面和 Canvas 画布上绘制两种方式
混合开发:提供了 XComponent 组件,支持加载应用动态库、NAPI 跨语言调用,进行 C++ 绘制能力的开发
跨平台:可通过一份代码结合相应的工具链同时生成多个平台的工程并编译出相应程序,然后在例如 iOS、Android 等平台上运行
应用程序框架
应用程序框架定义了应用的全生命周期,鸿蒙系统上的应用模型称为 Stage 模型,为了保障用户体验,规范化了后台进程管理,当应用处于后台状态时,不应处于高度活跃状态,系统定义了四类后台任务
短时任务:可进行数据保存操作,过时 则任务将被冻结
长时任务:对于音乐播放、投屏、导航等场景,系统提供了长时任务能力,开发者不应过度滥用
延时任务:对于实时性要求不高的场景可设置延时处理,系统会对多个应用的延时任务统一周期,一起处理
托管任务:如下载、提醒、定位等场景,任务是由系统完成的,完成后会通知到应用
Ability 是应用程序框架中最基本的抽象单位,是能够完成独立功能的应用组件,分为 UIAbility 和 ExtensionAbility 两大类,分别用来开发应用和万能卡片、输入法等
鸿蒙系统以 Module 作为模块化的解耦方式,以构建出可复用的组件,Module 中可以包含业务代码,也可以包含资源文件,编译出来的产物有三种形态
HAR(HarmonyOS Archive):就像静态库一样,最终会被编译到 HSP 或 HAP 包中
HSP(HarmonyOS Shared Package):就像动态库一样,相较于 HAR,当有多个 HAP 包依赖同一个 HSP 时,最终的打包产物中,HSP 只会存在一份
HAP(HarmonyOS Ability Package):HAP 包是鸿蒙应用可单独安装的容器包,同一个 HAP 支持多设备运行,当设备差异较大时,可以为不同设备设计不同的 HAP 包,在上架时,通过同一个 App 包来包含多个 HAP 包,可做到一次开发上架,多端分发、部署的效果
SDK
鸿蒙系统是分布式操作系统,一套 SDK 可适配多设备的开发,开发者在 IDE 中设置工程适配哪些设备,就可以使用这些设备支持的 API,不需要下载多个 SDK,对于某些设备不支持的 API,可通过 canIUse() 函数来判断。鸿蒙应用的主要开发语言是 ArkTS,同时也提供 C API 来开发支持鸿蒙应用的扩展动态库,再通过 import 语句导到到 ArkTS 环境中使用。
鸿蒙使用方舟编译器将 ArkTS 代码编译成方舟运行时能够理解的二进制字节码格式(ABC,ArkCompiler ByteCode),这与传统 JS 在运行时才进行源码解析和编译不同,所以性能要比 JS 应用高很多。
集成开发环境
HUAWEI DevEco Studio 提供了一站式鸿蒙生态应用、元服务开发能力。
工程管理:基于模板可以方便地创建出 Project、Module、Library、Ability 等开发元素
代码编辑:结合人工智能技术来做代码补全和代码纠错修复
界面预览:修改完代码不用重新编译构建,即可在预览界面中查看变化,并做到秒级刷新
编译构建(HUAWEI DevEco Hvigor):支持增量编译和一套代码多种产物
代码调试:支持跨设备、跨语言调试,提供 ArkUI Inspector 显示视图的布局及组件关系
性能调优(DevEco Profiler):提供多种模板对不同场景进行性能监测并定位有性能影响的代码位置
设备模拟:可以将多种不同设备进行分布式组网形成模拟超级终端后再调试,模拟器可以模拟移动网络、GPS、相机、陀螺仪等器件、外设功能
命令行工具:可以辅助管理 SDK、设备、提升调试、调优效率
端云一体化开发:云开发指元服务的云侧服务,鸿蒙为云侧服务提供了 Serverless 托管服务,具有开箱即用、一键部署、自动弹性伸缩、免运维等特点
测试工具
鸿蒙生态应用、元服务的测试分层模型分为:单元测试、集成测试、专项测试。
单元测试:是函数级别的验证,DevEco Testing Hypium 单元测试框架可以在真机或模拟器上运行
集成测试:分为模块测试和特性测试,提供了 UI 测试框架、稳定性测试工具(DevEco Testing wukong)、性能测试工具(DevEco Testing SmartPerf)来发现模块缺陷和应用的各性能指标是否正常,并能够生成相关报告展示问题
专项测试:包括全方位的质量测试,也提供性能、功耗、稳定性、兼容性、UX、安全等专项自动化测试
统一上架与多端分发
HUAWEI AppGallery Connect 为开发者提供了全球化、全场景一站式应用分发能力,并为开发者提供质量、安全、工程管理等领域的能力。
快速上架
AppGallery Connect 作为开发者统一提交入口,集成证书管理、项目管理、版本管理等功能,支持鸿蒙生态应用、元服务的快速上架和分发。
- 证书颁发
统一上架:上架前需要提供应用基本信息、AppGallery Connect 会对基本信息和 App 中使用的 API、资源、SDK 接入情况进行检查
上架审核:个人开发者和企业开发者都需要提供相关资质文件进行认证,平台会对应用从其兼容性、稳定性、隐私、合规、安全性、性能、功耗等进行全方位检测
应用分发
AppGallery Connect 支持按阶段、维度、场景等多种形式,高效、精准地分发到用户设备上。
分发阶段:应用上架后,可以设置成所有人同时能够更新,也可以设置一定比例的用户可以先看到更新,待开发者觉得没什么问题后再逐步提高分发比例
分发维度:可以按设备类型、PCID、屏幕类型、API Level、国家区域、年龄等条件分发
分发场景:开发者可以将非核心功能做成动态库,用户下载的安装包只是基本模块,当要执行到动态特性时才按需下载,AppGallery 还提供了代码方法级的 bug 修复方案,支持快速解决问题
服务分发
开发者根据元服务的使用场景,通过鸿蒙系统提供的接口接入数据,为元服务打上标签和分类,例如附近优惠券、出行旅游、打车、购票等,鸿蒙系统会根据用户所处位置、时间、设备状态等因素识别用户意图,根据 AI 智能推荐规则将元服务推荐到用户的手机或其它智能设备上,例如用户在手机上打开导航,进入到车里后,导航从手机流转到车载系统,沿途路过景点会有语音介绍,当接近景点后,相关购买景区门票的元服务就会推荐给用户。
自由流转与分布式运行环境
自由流转
跨端迁移和多端协同两者统称为自由流转,多设备的交互场景按照时间的串、并行分为串行交互和并行交互
串行交互(跨端迁移):多个不同设备间协同办公,用户行为或任务从一个设备迁移到另一个,并确保任务和业务的连续不中断,例如在外用手机编辑邮件,到家后迁移到平板上继续编辑,还有在家里用智慧屏上看视频,出门时迁移到手机上继续观看等等
并行交互(多端协同):多个设备上软件彼此协作完成一项任务,包括显示、交互和算力协同,某一业务在多个设备屏幕上同时呈现,或者是与一个设备的交互延展到另一个设备上,例如手机作为手柄,智慧屏作为游戏主机和屏幕,还可以用共享算力的方式来完成游戏计算任务(AI计算、图像渲染),提升游戏帧率和画质
分布式运行环境
自由流转依赖于鸿蒙系统提供的分布式运行环境,该环境从下而上分为四层
核心基础服务:包括身份认证、HiChain 设备互信认证部件(支撑设备间搭建安全数据传输通道)、分布式软总线(提供通信网络,实现分布式设备间的有序通信)等
分布式平台服务:提供跨设备间的资源访问和控制能力,如多设备间的数据管理、任务管理、硬件管理、窗口管理和包管理
核心业务框架:给应用提供简单友好的使用接口来调用核心基础服务所提供的能力
开发接口层:应用通过这一层来使用系统提供的能力,如数据存储、文件系统、硬件访问等
全方位运维分析
AppGallery Connect 为开发者提供了全方位运维分析服务,包括崩溃及卡顿问题监控、性能管理(APM)、云服务监控等,并为此提供了可视化实时报告和日志服务,支持多维度数据分析,智能诊断问题并给出解决方案,为开发者明确质量优化方向,提升用户体验。