鸿蒙生态应用开发核心概念
HarmonyOS 应用:使用 HarmonyOS SDK 开发的应用程序,能够在华为终端设备
(如:手机、平板等)上运行,其有两种形态:
⚫ 传统方式的需要安装的 App。
⚫ 轻量级,具备免安装,随处可即,服务直达,自由流转等关键特征的元服务。
HarmonyOS 元服务:元服务是 HarmonyOS 面向万物互联时代提供的一种轻量级
应用程序形态。它基于 HarmonyOS 平台开放能力开发,打包为 App Pack 形态,运行
在 HarmonyOS 操作系统,拥有一张或者多张万能卡片,由 HarmonyOS 应用程序框架
管理,具备随处可及、服务直达、跨设备等核心特征。
万能卡片:HarmonyOS 系统定义的一种界面展示形式,它是 HarmonyOS 元服务
的一个组成部分,将重要信息或操作前置到卡片,以达到服务直达,减少操作层级的目
的。万能卡片常用于嵌入到其他系统应用(桌面/负一屏)中作为其界面的一部分显示,
并支持点击拉起元服务。HarmonyOS 元服务必须实现万能卡片。
HarmonyOS 应用与元服务基于同一个鸿蒙系统技术栈开发,同属一个鸿蒙生态。
开发者通过业务解耦将应用分解为若干元服务独立开发,按需根据场景组合成复杂应用。
在万物智联时代重要机遇期,鸿蒙系统结合移动生态发展的趋势,提出了三大技术理念: 一次开发,多端部署;可分可合,自由流转;统一生态,原生智能。
HUAWEI DevEco Studio 提供的核心能力如下图所示
分布式调试交互图
多设备联合分析
缩放交互的规则
多设备按需分发的两种模式
模式 1:应用或服务的 UI 自适应不同尺寸的设备屏幕,并且在不同设备的功能相同,可以实现多设备共享一个 HAP 包。这种场景下建议开发者通过一个模块来开发,并配置该模块支持多设备,然后再编译构建生成一个 HAP,分发到不同类型的设备上
运行。
模式 2:应用或服务的 UI、功能在不同设备间存在差异,无法实现 HAP 包多设备归一。可根据实际情况设置不同模块适用的设备类型,编译构建多个 HAP 包,一起上架。HUAWEI AppGallery Connect 会自动提取 HAP 中的设备类型的配置信息,为对应的设备自动分发正确的 HAP 包组合
多入口按需分发
**
两种打包上架模式**
⚫ 模式一:打包成多个App Pack,不同App Pack的包名是不一样的,每个App Pack都需要单独上架。在运行态,应用和服务的生命周期完全独立。
⚫ 模式二:打包成一个 App Pack,App Pack 里面的 HAP 包名相同,统一上架。在运行态,应用生命周期完全共享。
原生智能 AI 能力分层开放框架
意图框架提供了 HarmonyOS 系统级的意图标准体系,通过多维系统感知、大模型等能力构建全局意图范式,实现对用户显性与潜在意图的理解,并及时、准确地将用户需求传递给生态伙伴,匹配合时宜的服务,为用户提供多模态、场景化进阶场景体验。
鸿蒙生态应用开发能力全景图
赋能套件全景图
鸿蒙开发套件全景图
开发套件全景图
典型测试工具能力简介
鸿蒙生态三方库管理
开发者通过如下方式即可方便快捷的使用三方库:
- 应用开发者登录鸿蒙生态中心仓,通过分类和关键字搜索需要的三方库信息;
- 应用开发者在应用开发时,通过 OHPM 包管理工具,将搜索到的三方库引入到应用依赖清单中。
ArkUI 框架
ArkUI 框架提供给开发者两种开发方式:基于 ArkTS 的声明式开发范式和基于 JS 扩展的类 Web 开发范式。声明式开发范式更加简洁高效,类 Web 开发范式对 Web 及前端开发
者更友好。
状态管理
状态管理从生效范围的维度可以分为应用范围和组件范围。应用范围的数据是以AppStorage 为中心进行管理,根据不同的使用场景分为提供系统环境数据管理的Environment,提供持久化存储支持的 Persistent Storage。组件范围的数据通过装饰器的
方式提供管理机制,称为状态变量装饰器:
⚫ @State:组件拥有的状态属性,当@State 装饰的变量更改时,组件会重新渲染更新 UI。
⚫ @Link:组件依赖于其父组件拥有的某些状态属性,当任何一个组件中的数据更新时,另一个组件的状态都会更新,父子组件重新渲染。
⚫ @Prop:类似@Link,但子组件所做的更改不会同步到父组件上,属于单向传递。
⚫ @Provide:作为数据的提供方,可以更新其子孙节点的数据,并触发页面渲染。
⚫ @Consume:在感知到@Provide 数据更新后,会触发当前自定义组件的重新渲染同时为了使应用数据变化能够触发组件的更新,基于 AppStorage 还提供了两个状态变量装饰器:
⚫ @StorageLink 装饰器:组件通过使用@StorageLink(key)装饰的状态变量,与AppStorage 建立双向数据绑定,key 为 AppStorage 中的属性键值。当创建包含@StorageLink 的状态变量的组件时,该状态变量的值将使用 AppStorage 中的值
进行初始化。在 UI 组件中对@StorageLink 的状态变量所做的更改将同步到AppStorage ,并从 AppStorage 同步到任何其他绑定实例中,如PersistentStorage 或其他绑定的 UI 组件。
⚫ @StorageProp 装饰器:组件通过使用@StorageProp(key)装饰的状态变量,将与AppStorage 建立单向数据绑定,key 标识 AppStorage 中的属性键值。当创建包含@StoageProp 的状态变量的组件时,该状态变量的值将使用 AppStorage 中的
值进行初始化。AppStorage 中的属性值的更改会导致绑定的 UI 组件进行状态更新。
类 Web 开发范式
类 Web 范式实现层面可以进一步部署到轻量化的设备上。通过轻量化设计的思路,将JS Framework 下沉到 C++层,以减小 JS 的内存占用,使用 C++进行更为严格的内存分配
管理,并采用更为轻量的 JS 引擎,UI 部分采用轻量的 UIKit 并结合轻量图形引擎最终实现百 K 级别设备的支持,从而在轻化设备上可执行的应用,也可以在硬件规格更高的设备上执行,而无需重新开发。这也就是采用类 Web 开发范式的优势所在,采用统一的开发范式,开发者无需关心具体运行时的前端框架JS 引擎与后端 UI 组件,系统会根据运行平台不同,采用最佳的模块,保障应用在不同平台都可具有最佳的运行性能
可视可说框架
可视可说框架提供“系统级”和“应用级”两种实现方式。其中,“系统级”无需应用适配自动支持标准控件文本的语音操控功能;“应用级”接入方式允许开发者对控件场景、角标、别名、个性化播报等元素进行适配,从而提供最佳的用户体验。应用级和系统级两种实现是互补关系,应用级优化用户体验,系统级保证覆盖率。
单次语音交互生命周期
视可说分为信息获取和识别执行,信息获取模块基于界面变化用户监听界面变化获取信息热词,识别执行模块将信息热词传递到语音系统进行 AI 识别。
Stage 模型相关概念
C API 接口组成
普通 JS 运行时与方舟编译运行时比对图
编译流水线
前端流水线在发起编译时,进行工程参数解析,依赖分析,语法校验,语法转换,代码编译等各个编译动作的编排。前端编译器负责编译流水线中源代码编译,提供对应的触发接口给编译流水线。
前端编译器架构
前端编译器是根据输入的 ArkTS 源码,进行词法,语法解析、转换、编译、输出字节码文件;在这个过程中会提取代码中标注的类型信息,进行类型检查,类型绑定,最终作为元数据生成到字节码 ABC 文件中。
⚫ 解析:前端编译器读取 ArkTS 源码,进行词法,语法解析,输出抽象语法树(AST)
⚫ 转换:前端编译器识别语法糖,转换成基础语法
⚫ 编译:根据抽象语法树,生成对应的中间表示(IR)
⚫ 输出:收集 IR,字符资源,常量,等各种元素,按照 ABC 文件格式生成字节码文件
⚫ 优化:读取 ABC 文件中的字节码信息,生成 IR 表示,进行优化处理,重新生成更优的字节码文件
界面预览
在开发过程中,开发者需频繁修改界面代码,查看对应的呈现效果,确保开发与实现目标一致。传统的开发模式下,开发者每次修改代码后,执行编译构建,并推送应用到设备上新运行,才能查看到界面的呈现效果,整个过程冗长,产生极大的时间浪费。HUAWEI DevEco Studio 提供了界面预览能力,使开发者更方便快速地调测应用界面,大幅提升界面开发效率
端云一体化开发全景图
端云一体化开发:支持端侧代码和云侧代码的协同开发,统一管理端侧和云侧代码目录,进行端云代码的端到端开发、调试和部署。
端云一体化组件:内置完整的云侧逻辑,开发者在集成 UI 组件的同时即可自动实现云侧逻辑,快速实现特定场景的功能。
鸿蒙生态应用、元服务分层测试模型
- 单元测试是函数级别的验证。函数是产品开发实现的最基本单位,单元测试通过验证产品代码的函数输入输出,最终保证整个产品的质量
单元测试框架
UI 测试框架
SmartPerf 主要结构
wukong 功能全景图
⚫ 命令行解析:支持命令行获取参数并解析命令行参数。
⚫ 运行环境管理:根据命令行初始化 wukong 整体运行环境。
⚫ 系统接口管理:检查并获取指定的 mgr,注册 controller 和 dfx 的 faultlog 的回调函数。
⚫ 随机事件生成:通过 random 函数生成指定种子数的随机序列,生成事件。
⚫ 事件注入:根据支持的事件类型向系统注入事件,依赖窗口、多模、安全等子系统。
⚫ 异常捕获处理:通过 DFX 子系统获取运行中的异常信息。
⚫ 报告生成:保存运行时的异常信息并记录执行日志,生成报告。
⚫ HDC 命令行:依赖 hdc 将命令下发至设备端,支持 exec 和 special 两类命令集。
分布式录制架构原理
提供基于开发者对设备操作序列的监听,识别所操作的控件,转换生成测试脚本的能力,支持多设备分布式场景自动化脚本录制
⚫ 事件监听:监控设备操作状态,抓取设备操作事件流,同步到主控 PC。
⚫ 事件识别&智能定位:多个设备通过 USB 同步时钟,按时间顺序处理监听到的设备事件,根据事件的坐标等信息结合当前设备显示页面的结构智能识别还原真实的操作,生成对应的 DSL 操作描述。
⚫ 生成脚本:解析 DSL 描述,生成对应脚本,通过自主编辑增加检查点,就形成了完整的脚本。