前 言
概述
本文档介绍KaihongOS标准系统的技术架构、子系统、系统应用、典型特性以及支持的设备类型。
读者对象
本文档主要面向以下人员:
提示约定
在本文中可能出现下列提示信息,它们所代表的含义如下。
[tr]提示信息说明[/tr]
| 警告 | 用于警示潜在的危险情形,若不避免,可能会导致人员死亡或人身伤害。 |
| 注意 | 用于传递设备或环境安全警示信息,若不避免,可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。“注意”不涉及人身伤害。 |
| 说明 | 用于突出重要/关键信息、最佳实践和小窍门等。“说明”不是安全警示信息,不涉及人身、设备及环境伤害。 |
修订记录
修改记录累积了每次文档更新的说明。最新版本的文档包含以前所有文档版本的更新内容。
[tr]文档版本发布日期修改说明[/tr]
1 系统总体介绍
1.1 系统概述
KaihongOS标准系统软件是一款面向全行业、全场景的万物智联操作系统,以OpenHarmony为技术底座,围绕系统内核、系统框架、性能优化等方面进行能力增强及研发创新,同时针对行业特性,提供构建行业定制化能力。
1.2 技术架构
KaihongOS标准系统软件技术架构整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。如下所示:
![]()
图1-1 KaihongOS标准系统软件技术架构图
其中,子系统是一个逻辑概念,它具体由对应的组件构成。
组件是对子系统的进一步拆分,可复用的软件单元,它包含源码、配置文件、资源文件和编译脚本。它能独立构建,以二进制方式集成,是具备独立验证能力的二进制单元。
1.2.1 内核层
- 内核子系统:KaihongOS标准系统软件的内核子系统采用Linux内核设计。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
- 驱动子系统:驱动框架(HDF,Hardware Driver Foundation)是系统硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。
1.2.2 系统服务层
系统服务层是KaihongOS标准系统软件的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:
- 系统基本能力子系统集:为分布式应用在多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、公共基础库、多模输入、图形、安全、AI等子系统组成。
- 基础软件服务子系统集:提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 等子系统组成。
- 增强软件服务子系统集:提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。
KaihongOS标准系统软件的增强软件服务子系统集,提供KaihongOS标准系统软件自定义的增强软件服务,由端云连接、近场感知服务、穿戴业务、金融安全、IoT业务等子系统组成。
- 硬件服务子系统集:提供硬件服务,由位置服务、用户IAM、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。
根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
1.2.3 框架层
框架层为应用开发提供了C/C++/JS等多语言的用户程序框架和Ability框架,适用于JS语言的ArkUI框架,以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,设备支持的API也会有所不同。
1.2.4 应用层
应用层包括系统应用和第三方非系统应用。系统应用包括桌面、设置等系统必须的应用,应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。
1.3 功能汇总列表
表1-1 功能汇总列表
[size=10.5000pt]序号
| [size=10.5000pt]子系统/应用[size=10.5000pt]/特性
| [size=10.5000pt]模块
| [size=10.5000pt]描述
| [size=10.5000pt]社区
[size=10.5000pt](未变功能)
| [size=10.5000pt]增强
[size=10.5000pt](优化社区功能)
| [size=10.5000pt]自研
[size=10.5000pt](新功能)
|
1
| ArkUI子系统
| /
| 1. 支持基础、容器、绘制、媒体和画布多种UI组件
|
| Y
|
|
2. 支持线性布局、弹性布局、列表布局、栅格布局、宫格布局
| Y
|
|
|
3. 支持属性动画、显示动画、转场动画效果
| Y
|
|
|
4. 支持使用画布组件绘制图形的能力
| Y
|
|
|
5. 支持鼠标、键盘、手指等交互事件
|
| Y
|
|
6. 支持平台API通道
|
| Y
|
|
7. 支持声明式和类web两种编程范式
| Y
|
|
|
2
| Ability子系统
| /
| 1. 支持Ability的启动
| Y
|
|
|
2. 支持Ability的生命周期管理及调度
| Y
|
|
|
3. 支持获取运行中的应用程序/Ability的上下文,并通过上下文访问应用程序的特定资源
| Y
|
|
|
4. 支持通过DataAbility进行数据资源的增删改查及监听
| Y
|
|
|
5. 提供系统任务管理能力,包括对系统任务执行锁定、解锁、清理、切换到前台等操作
| Y
|
|
|
6. 提供特性增强功能,包括设置看门口看护应用,监听应用的内存状态
|
|
| Y
|
3
| 包管理子系统
| /
| 1. 支持应用程序的安装、卸载、升级
| Y
|
|
|
2. 支持应用程序数据的管理,持久化
| Y
|
|
|
3. 支持应用程序的签名检查、权限管理
| Y
|
|
|
4. 提供特性增强功能,支持系统应用的在线升级
|
|
| Y
|
4
| 升级子系统
| /
| 1. 支持升级包进行签名
| Y
|
|
|
2. 支持云端版本检测
|
| Y
|
|
3. 支持升级包下载的断点续传
|
|
| Y
|
4. 支持升级包完整性校验
|
| Y
|
|
5. 支持全量升级
|
| Y
|
|
6. 支持Kernel、Uboot升级
|
|
| Y
|
7. 支持远程控制设备OTA升级(Push机制)
|
|
| Y
|
8. 支持系统组件升级
|
| Y
|
|
9. 支持系统组件回退到初始版本
|
| Y
|
|
5
| 时间时区子系统
| /
| 1. 支持获取并设置系统时间
| Y
|
|
|
2. 支持获取并设置系统时区
| Y
|
|
|
3. 支持NTP对时服务
| Y
|
|
|
4. 支持定时器服务
|
| Y
|
|
6
| 输入法框架子系统
| /
| 1. 支持点击输入框拉起输入法
| Y
|
|
|
2. 支持隐藏输入法
|
| Y
|
|
3. 支持获取输入框的输入文本
|
| Y
|
|
4. 支持移动输入光标
| Y
|
|
|
5. 支持输入事件订阅,包括光标变化、文本变化、文本选择变化等
| Y
|
|
|
7
| 窗口子系统
| /
| 1. 获取屏幕属性,监听屏幕变化
| Y
|
|
|
2. 窗口管理
| Y
|
|
|
3. 获取屏幕截图,截屏数据保存在PixelMap对象中
| Y
|
|
|
4. 支持屏幕异显模式
|
| Y
|
|
8
| 多模输入子系统
| /
| 1. 支持触摸屏的触摸输入
| Y
|
|
|
2. 支持键盘输入
| Y
|
|
|
3. 支持鼠标输入
| Y
|
|
|
4. 支持订阅/取消按键输入
| Y
|
|
|
5. 支持注入按键输入
| Y
|
|
|
9
| 基础通信子系统
| 电话服务
| 1. 蜂窝数据连接上网
|
| Y
|
|
以太网通信
| 1. 网络参数配置
| Y
|
|
|
2. 状态管理
| Y
|
|
|
3. 网络共享
| Y
|
|
|
Wi-Fi通信
| 1. 支持作为STA扫描附近的Wi-Fi设备
|
| Y
|
|
2. 支持作为AP被其他设备发现
|
| Y
|
|
蓝牙通信
| 1. 支持蓝牙开关等基本操作
|
| Y
|
|
2. 支持BLE广播扫描
|
| Y
|
|
3. 支持BLE连接、数据读写
|
| Y
|
|
网络优选
| 优先选择能够正常上网的网络
|
| Y
|
|
网络协议
| 1. 支持WebSocket、HTTP、HTTPS、TCP、UDP协议
|
| Y
|
|
2. 支持MQTT(单实例MQTT、多实例MQTT)、CAN、Modbus协议
|
|
| Y
|
NFC服务
| 支持NFC tag读写
| Y
|
|
|
10
| 分布式软总线子系统
| 软总线通信
| 1. 融合通信
|
|
| Y
|
2. 软总线设备发现
|
| Y
|
|
3. 软总线设备认证
| Y
|
|
|
4. 软总线设备之间消息传输
|
| Y
|
|
5. 软总线设备之间字节传输
|
| Y
|
|
6. 软总线设备之间流传输
|
| Y
|
|
7. 软总线设备之间文件传输
|
| Y
|
|
无感配网
| 支持BLE无感配网
|
|
| Y
|
无感组网
| 支持预置/下发安全信息进行无感组网
|
|
| Y
|
11
| 媒体子系统
| 音频
| 1. 音频播放
| Y
|
|
|
2. 音频录制
| Y
|
|
|
3. 音频渲染
| Y
|
|
|
4. 音频流管理
| Y
|
|
|
5. 音频采集
| Y
|
|
|
视频
| 1. 视频播放
| Y
|
|
|
2. 管理播放任务
| Y
|
|
|
3. 视频录制
| Y
|
|
|
图片
| 1. 图片编解码
| Y
|
|
|
2. 图片信息获取与数据读写
| Y
|
|
|
相机
| 1. 预览
| Y
|
|
|
2. 拍照
| Y
|
|
|
3. 录像
| Y
|
|
|
媒体库
| 1. 媒体文件访问
| Y
|
|
|
2. 媒体文件修改
| Y
|
|
|
TTS智能语音
| 1. 读取文本
|
|
| Y
|
2. 转换为语音
|
|
| Y
|
12
| 文件管理子系统
| /
| 1. 文件管理
| Y
|
|
|
2. 文件读写
| Y
|
|
|
3. 目录管理
| Y
|
|
|
4. 以流的形式读写文件
| Y
|
|
|
13
| 分布式数据管理子系统
| 关系型数据库
| 1. 打开数据库
| Y
|
|
|
2. 删除数据库
| Y
|
|
|
3. 执行sql语句
| Y
|
|
|
4. 增加数据
| Y
|
|
|
5. 更新数据
| Y
|
|
|
6. 删除数据
| Y
|
|
|
用户首选项
| 1. 获取用户首选项实例
| Y
|
|
|
2. 写入数据
| Y
|
|
|
3. 读取数据
| Y
|
|
|
4. 删除数据
| Y
|
|
|
5. 数据持久化
| Y
|
|
|
6. 订阅数据变更
| Y
|
|
|
7. 删除指定文件
| Y
|
|
|
14
| 分布式硬件子系统
| 分布式相机
| 1. 预览
|
|
| Y
|
2. 拍照
|
|
| Y
|
分布式屏幕
| 1. 投屏
|
| Y
|
|
3. 关闭投屏
|
|
| Y
|
4. 打开反控
|
|
| Y
|
5. 关闭反控
|
|
| Y
|
15
| DFX子系统
| 日志自动上传
| 1. 日志本地存储
|
|
| Y
|
2. 自动上传日志到超级设备运维管理平台
|
|
| Y
|
DFR打点数据上云
| 支持自动采集HiSysEvent埋点数据上传到超级设备运维管理平台
|
|
| Y
|
内存泄露检测
| 内存泄露识别
|
|
| Y
|
内存泄露查杀
|
|
| Y
|
资源指标采集
| 支持采集资源占用数据上传到超级设备运维管理平台
|
|
| Y
|
16
| 安全子系统
| 设备安全等级管理与数据传输管控
| 1. 设备安全等级
| Y
|
|
|
2. 设备可支持的数据风险等级
| Y
|
|
|
程序访问控制管理
| 应用权限校验、授予与撤销
| Y
|
|
|
数据安全
| 1. 密钥生成
| Y
|
|
|
2. 数据加密
| Y
|
|
|
3. 数据解密
| Y
|
|
|
4. 哈希计算
| Y
|
|
|
17
| 系统应用
| Launcher
| 1. 作为系统人机交互的首要入口
|
| Y
|
|
2. 提供应用图标的显示、点击启动
| Y
|
|
|
3. 提供应用卸载应用
| Y
|
|
|
4. 提供桌面布局设置以及最近任务管理等功能
| Y
|
|
|
SystemUI
| 1. 状态栏:支持显示日期/时间、消息通知图标、网络状态
|
| Y
|
|
2. 导航栏:支持返回、首页、最近任务和显示隐藏
|
| Y
|
|
3. 通知管理下拉菜单:支持消息通知点击查看,侧滑删除/设置
|
| Y
|
|
4. 控制中心下拉菜单:支持WLAN/移动数据/蓝牙/分布式屏幕/截屏快捷开关,音量/亮度进度快捷调节设置
|
| Y
|
|
输入法
| 1. 支持切换中英文、符号、数字、大小写模式
|
|
| Y
|
2. 支持显示/隐藏输入框窗口
|
|
| Y
|
3. 支持获取输入框的输入文本
|
|
| Y
|
4. 支持删除输入文本
|
|
| Y
|
5. 支持移动光标
|
|
| Y
|
设置
| 1. 支持Wi-Fi开关、扫描Wi-Fi网络、手动添加Wi-Fi网络
|
| Y
|
|
2. 支持蓝牙开关
|
| Y
|
|
3. 支持移动数据开关、设置网络类型、设置APN
|
| Y
|
|
4. 支持以太网自动获取IP,手动设置IP
|
| Y
|
|
5. 支持个人热点、NFC
|
| Y
|
|
6. 支持媒体音量调节
|
| Y
|
|
7. 支持通知显示开关
|
| Y
|
|
8. 支持亮度调节
|
| Y
|
|
9. 支持自动锁屏时间设置
|
| Y
|
|
10. 支持应用管理、权限管理
|
| Y
|
|
11. 支持本机信息展示,如设备名称、版本号、屏幕信息、存储信息等
|
| Y
|
|
12. 支持设置日期和时间、开发者选项
|
| Y
|
|
settingsData
| 支持系统属性数据库的访问、存取
| Y
|
|
|
星系组网
| 1. 设备发现
|
|
| Y
|
2. 配网组网
|
|
| Y
|
3. 设备详情
|
|
| Y
|
4. 原子化服务
|
|
| Y
|
5. 分布式屏幕
|
|
| Y
|
6. 解除组网
|
|
| Y
|
应用市场
| 1. 原子化服务:发现云端及附近可信设备的原子化服务,支持收藏、添加到桌面、分发到其他设备、移除等操作
|
|
| Y
|
2. 应用:发现云端的应用,支持安装、更新、卸载等操作
| Y
|
|
|
3. 组件:支持更新和回退到初始版本操作
|
|
| Y
|
4. 搜索:支持搜索本地和云端的原子化服务、应用和组件
|
|
| Y
|
5. 设置:支持超级设备管理平台的账号登录和退出功能,支持自动更新应用设置
|
|
| Y
|
18
| 原子化服务
| 服务流转
| 1. 流转本服务
|
| Y
|
|
2. 统一入口流转指定服务
|
| Y
|
|
19
| docker服务
| -
| 支持容器的隔离和资源管理
|
|
| Y
|
2 子系统介绍
2.1 ArkUI子系统
2.1.1 子系统概述
方舟开发框架(简称:ArkUI),是一套构建OpenHarmony应用界面的UI开发框架,它提供了极简的UI语法与包括UI组件、动画机制、事件交互等在内的UI开发基础设施,以满足应用开发者的可视化界面开发需求。
基本概念如下:
方舟开发框架内置了丰富的多态组件,包括文本、图片、按钮等基础组件,可包含一个或多个子组件的容器组件,满足开发者自定义绘图需求的绘制组件,以及提供视频播放能力的媒体组件等。其中“多态”是指组件针对不同类型设备进行了设计,提供了在不同平台上的样式适配能力。
UI界面设计离不开布局的参与。方舟开发框架提供了多种布局方式,除了基础的线性布局、弹性布局外,也提供了相对复杂的列表、宫格、栅格布局,以及自适应多分辨率场景开发的原子布局能力。
动画是UI界面的重要元素之一,优秀的动画设计能够极大地提升用户体验,方舟开发框架提供了丰富的动画能力,除了组件内置动画效果外,还包括属性动画、自定义转场动画以及动画API等。
方舟开发框架提供了多种绘制能力,以满足开发者的自定义绘图需求,支持绘制形状、颜色填充、绘制文本、变形与裁剪、嵌入图片等。
方舟开发框架提供了多种交互能力,以满足应用在不同平台通过不同输入设备进行UI交互响应的需求,默认适配了触摸手势、遥控器按键输入、键鼠输入,同时提供了相应的事件回调以便开发者添加交互逻辑。
方舟开发框架提供了API扩展机制,可通过该机制对平台能力进行封装,提供风格统一的JS接口。
方舟开发框架针对不同的应用场景以及不同技术背景的开发者提供了两种开发范式,分别是
基于ArkTS的声明式开发范式(简称“声明式开发范式”)和
兼容JS的类Web开发范式(简称“类Web开发范式”)。
表2-1 开发范式表
[tr]开发范式名称简介适用场景适用人群[/tr]
| 声明式开发范式 | 采用基于TypeScript进行声明式UI语法扩展而来的ArkTS语言,从组件、动画和状态管理三个维度提供了UI绘制能力。声明式开发范式更接近自然语义的编程方式,让开发者直观地描述UI界面,不必关心框架如何实现UI绘制和渲染,实现极简高效开发。 | 复杂度较大、团队合作度较高的应用 | 移动系统应用开发人员、系统应用开发人员 |
| 类Web开发范式 | 采用经典的HML、CSS、JavaScript三段式开发方式,使用HML标签文件进行布局搭建,使用CSS文件进行样式描述,使用JavaScript文件进行逻辑处理。UI组件与数据之间通过单向数据绑定的方式建立关联,当数据发生变化时,UI界面自动触发刷新。该开发方式更接近Web前端开发者的使用习惯,便于快速将已有的Web应用改造成方舟开发框架应用。 | 界面较简单的中小型应用和卡片 | Web前端开发人员 |
2.1.2 技术架构图
![]()
图2-1 ArkUI子系统技术架构图
前端框架层提供了上层的开发范式,用户通过提供的开发范式进行应用的开发。同时,还提供了对应的组件支持,以及对应的编程模型MVVM。通过MVVM进行数据和视图的绑定,当数据变更后框架会对绑定的界面元素进行更改。同样用户的输入也会传递到后台,通过绑定实现界面的自动更新Bridge桥接层。
该层作为前端引擎到后端引擎的中间层,起到了对接的作用。通过桥接层将不同的前端开发框架进行转化后转到同一个后端框架,使得开发范式可以扩展。当前支持的类Web开发范式和TS声明式开发范式在进行转化时,组件信息都转化为同一个数据结构Component传递到引擎层,使得架构上可支持多前端开发范式。同样的,后续还可以进一步对前端引擎的支持进行扩充。
由C++构建的UI后端引擎,包括UI组件、布局视图、动画事件、自绘制渲染管线和渲染引擎、语言&运行时执行引擎。可根据需要切换到不同的运行时执行引擎,满足不同设备的能力差异化需求。
该层主要是通过平台抽象,将平台依赖聚焦到底层画布,通用线程以及事件机制等少数必要的接口上,为跨平台打造了相应的基础设施,并能够实现一致化UI渲染体验。
2.1.3 功能/规格详述
2.1.3.1 声明式开发范式
使用基于ArkTS的声明式开发范式的方舟开发框架,采用更接近自然语义的编程方式,让开发者可以直观地描述UI界面,不必关心框架如何实现UI绘制和渲染,实现极简高效开发。开发框架不仅从组件、动画和状态管理三个维度来提供UI能力,还提供了系统能力接口以实现系统能力的极简调用。
框架提供丰富的系统预置组件,可以通过链式调用的方式设置系统组件的渲染效果。开发者可以组合系统组件为自定义组件,通过这种方式将页面组件化为一个个独立的UI单元,实现页面不同单元的独立创建、开发和复用,使页面具有更强的工程性。
提供svg标准的绘制图形能力,同时开放了丰富的动效接口,开发者可以通过封装的物理模型或者调用动画能力接口来实现自定义动画轨迹。
作为基于ArkTS的声明式开发范式的特色,通过功能不同的装饰器给开发者提供了清晰的页面更新渲染流程和管道。状态管理包括UI组件状态和应用程序状态,两者协作可以使开发者完整地构建整个应用的数据更新和UI渲染。
使用基于ArkTS的声明式开发范式的方舟开发框架,还封装了丰富的系统能力接口,开发者可以通过简单的接口调用,实现从UI设计到系统能力调用的极简开发。
声明式开发范式,目前可供选择的组件如表2-2所示。
表2-2 声明式开发范式规格表
[size=10.5000pt]序号
| [size=10.5000pt]组件类型
| [size=10.5000pt]主要组件
|
1
| 触摸屏基础组件
| Blank、Button、Checkbox、CheckboxGroup、DataPanel、DatePicker、Divider、Gauge、Image、ImageAnimator、LoadingProgress、Marquee、Navigation、PatternLock、PluginComponent、Progress、QRCode、Radio、Rating、RichText、ScrollBar、Search、Select、Slider、Span、Stepper、StepperItem、Text、TextArea、TextClock、TextInput、TextPicker、TextTimer、TimePicker、Toggle、Web、XComponent
|
2
| 容器组件
| AlphabetIndexer、Badge、Column、ColumnSplit、Counter、Flex、GridContainer、Grid、GridItem、List、ListItem、Navigator、Panel、Refresh、Row、RowSplit、Scroll、SideBarContainer、Stack、SwIPer、Tabs、TabContent
|
3
| 媒体组件
| Video
|
4
| 绘制组件
| Circle、EllIPse、Line、Polyline、Polygon、Path、Rect、Shape
|
5
| 画布组件
| Canvas
|
2.1.3.2 类web开发范式
兼容JS的类Web开发范式的方舟开发框架,采用经典的HML、CSS、JavaScript三段式开发方式。使用HML标签文件进行布局搭建,使用CSS文件进行样式描述,使用JavaScript文件进行逻辑处理。UI组件与数据之间通过单向数据绑定的方式建立关联,当数据发生变化时,UI界面自动触发更新。此种开发方式,更接近Web前端开发者的使用习惯,快速将已有的Web应用改造成方舟开发框架应用。主要适用于界面较为简单的中小型应用开发。组件列表如表2-3所示。
表2-3 类web开发范式规格表
|
|
|
|
| button、chart、divider、image、image-animator、input、label、marquee、menu、option、picker、picker-view、piece、progress、qrcode、rating、richtext、search、select、slider、span、switch、text、textarea、toolbar、toolbar-item、toggle、web、xcomponent
|
|
| badge、dialog、div、form、list、list-item、list-item-group、panel、popup、refresh、stack、stepper、stepper-item、swIPer、tabs、tab-bar、tab-content
|
|
|
|
|
| svg、rect、circle、ellIPse、path、line、polyline、polygon
|
|
|
|
|
| grid-container、grid-row、grid-col
|
2.1.3.3 UI布局
线性布局
线性布局(LinearLayout)是开发中最常用的布局。线性布局的子组件在线性方向上(水平方向和垂直方向)依次排列。通过线性容器
Row和
Column实现线性布局。Column容器内子组件按照垂直方向排列,Row组件中子组件按照水平方向排列。
线性布局的排列方向由所选容器组件决定。根据不同的排列方向,选择使用Row或Column容器创建线性布局,通过调整space、alignItems、justifyContent属性调整子组件的间距,水平垂直方向的对齐方式。
- 通过space参数设置主轴(排列方向)上子组件的间距。达到各子组件在排列方向上的等间距效果。
- 通过alignItems属性设置子组件在交叉轴(排列方向的垂直方向)的对齐方式。且在各类尺寸屏幕中,表现一致。其中,交叉轴为垂直方向时,取值为VerticalAlign类型,水平方向取值为HorizontalAlign类型。
- 通过justifyContent属性设置子组件在主轴(排列方向)上的对齐方式。实现布局的自适应均分能力。取值为FlexAlign类型。
具体使用以及效果,如表2-4所示。
表2-4 线性布局效果表
[size=10.5000pt]序号
| [size=10.5000pt]属性名
| [size=10.5000pt]描述
| [size=10.5000pt]Row效果图
| [size=10.5000pt]Column效果图
|
1
| space
| l 横向布局中各子组件在水平方向的间距
l 纵向布局中各子组件垂直方向间距
|
|
|
2
| alignItems
| 在容器排列方向的垂直方向上,子组件在父容器中的对齐方式
|
|
|
3
| justifyContent
| 容器排列方向上,子组件在父容器中的对齐方式
|
|
|
层叠布局
层叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局。通过层叠容器
Stack实现,容器中的子元素依次入栈,后一个子元素覆盖前一个子元素显示。效果如表2-5所示。
表2-5 层叠布局效果表
[size=10.5000pt]序号
| [size=10.5000pt]属性名
| [size=10.5000pt]描述
| [size=10.5000pt]图示
|
1
| TopStart
| 顶部起始端
|
|
2
| Top
| 顶部横向居中
|
|
3
| TopEnd
| 顶部尾端
|
|
4
| Start
| 起始端纵向居中
|
|
5
| Center
| 横向和纵向居中
|
|
6
| End
| 尾端纵向居中
|
|
7
| BottomStart
| 底部起始端
|
|
8
| Bottom
| 底部横向居中
|
|
9
| BottomEnd
| 底部尾端
|
|
弹性布局
弹性布局(Flex布局)是自适应布局中使用最为灵活的布局。弹性布局提供一种更加有效的方式来对容器中的子组件进行排列、对齐和分配空白空间。
- 容器:Flex组件作为Flex布局的容器,用于设置布局相关属性。
- 子组件:Flex组件内的子组件自动成为布局的子组件。
- 主轴:Flex组件布局方向的轴线,子组件默认沿着主轴排列。主轴开始的位置称为主轴起始端,结束位置称为主轴终点端。
- 交叉轴:垂直于主轴方向的轴线。交叉轴起始的位置称为交叉轴首部,结束位置称为交叉轴尾部。
![]()
图2-2 弹性布局图
网格布局
网格布局(GridLayout)是自适应布局中一种重要的布局,具备较强的页面均分能力,子组件占比控制能力。 通过
Grid容器组件和子组件
GridItem实现,Grid用于设置网格布局相关参数,GridItem定义子组件相关特征。优势如下:
- 容器组件尺寸发生变化时,所有子组件以及间距等比例调整,实现布局的自适应能力。
- 支持自定义网格布局行数和列数,以及每行每列尺寸占比。
- 支持设置网格布局中子组件的行列间距。
- 支持设置子组件横跨几行或者几列。
栅格布局
栅格系统作为一种辅助布局的定位工具,在平面设计和网站设计都起到了很好的作用,对移动设备的界面设计有较好的借鉴作用。总结栅格系统对于移动设备的优势主要有:
- 给布局提供一种可循的规律,解决多尺寸多设备的动态布局问题。
- 给系统提供一种统一的定位标注,保证各模块各设备的布局一致性。
- 给应用提供一种灵活的间距调整方法,满足特殊场景布局调整的可能性。
![]()
图2-3 栅格布局图
图2-3中的Gutter、Margin和Column介绍如下:
- Gutter:用来控制元素与元素之间距离关系。可以根据设备的不同尺寸,定义不同的gutter值,作为栅格布局的统一规范。为了保证较好的视觉效果,通常gutter的取值不会大于margin的取值。
- Margin:离栅格容器边缘的距离。可以根据设备的不同尺寸,定义不同的margin值,作为栅格布局的统一规范。
- Column: 栅格布局的主要定位工具。根据设备的不同尺寸,把栅格容器分割成不同的列数,在保证margin和gutter符合规范的情况下,根据总Column的个数计算每个Column列的宽度。
媒体查询
媒体查询(Media Query)作为响应式设计的核心,在移动设备上应用十分广泛。它根据不同设备类型或同设备不同状态修改应用的样式。媒体查询的优势有:
- 提供丰富的媒体特征监听能力,针对设备和应用的属性信息(比如显示区域、深浅色、分辨率),设计出相匹配的布局。
- 当屏幕发生动态改变时(比如分屏、横竖屏切换),同步更新应用的页面布局。
2.2.3.4 弹窗
ArkUI子系统的弹窗模块(@ohos.prompt)支持创建并显示文本提示框、对话框和操作菜单。
- 文本提示框:支持自定义文本提示框的显示信息、持续显示时长、弹窗边框距离屏幕底部的位置。
文本提示框持续显示时长的默认值为1500ms,取值区间为1500ms~10000ms。若设置值小于1500ms则取默认值,若大于10000ms则取上限值10000ms。
- 对话框:包括标题文本,内容文本和按钮。支持1~3个按钮,其中第一个为positiveButton;第二个为negativeButton;第三个为neutralButton。
- 操作菜单:包括标题文本和按钮。支持1~6个按钮,大于6个按钮时弹窗不显示。
2.2 Ability子系统
2.2.1 子系统概述
Ability子系统(也称元能力子系统)是基础能力子系统中的Ability框架,元能力子系统实现对Ability的运行及生命周期进行统一的调度和管理,应用进程能够支撑多个Ability,Ability具有跨应用进程间和同一进程内调用的能力。Ability管理服务统一调度和管理应用中各Ability,并对Ability的生命周期变更进行管理。
2.2.2 技术架构图
![]()
图2-4 元能力子系统技术架构图
Ability Kit为Ability的运行提供基础的运行环境支撑。Ability是系统调度应用的最小单元,是能够完成一个独立功能的组件,一个应用可以包含一个或多个Ability。Ability分为FA(Feature Ability)和PA(Particle Ability)两种类,其中FA支持Page Ability,PA支持Service Ability和Data Ability。
Ability管理服务(AbilityManagerService)用于协调各Ability运行关系、及对生命周期进行调度的系统服务。包含以下模块:
- Ability栈管理模块(AbilityStackManager)负责维护各个Ability之间跳转的先后关系。
- 连接管理模块(AbilityConnectManager)是Ability管理服务对Service类型Ability连接管理的模块。
- 数据管理模块(DataAbilityManager)是Ability管理服务对Data类型Ability管理的模块。
- App管理服务调度模块(AppScheduler)提供Ability管理服务对用户程序管理服务进行调度管理的能力。
- Ability调度模块(AbilityScheduler)提供对Ability进行调度管理的能力。
- 任务栈管理模块(MissionStack)提供对任务栈的管理的能力。
- AbilityRcord记录运行中的Ability的地址、状态等。
- 生命周期调度模块(LifecycleDeal)是Ability管理服务对Ability的生命周期事件进行管理调度的模块。
Ability生命周期(Ability Life Cycle)是Ability被调度到INACTIVE、ACTIVE、BACKGROUND等各个状态的统称(主要涉及PageAbility类型和ServiceAbility类型的Ability)。
PageAbility类型的Ability生命周期流转,如图2-5所示。
![]()
图2-5 PA的Ability生命周期流转图
ServiceAbility类型的Ability生命周期流转,如图2-6所示。
![]()
图2-6 SA的Ability生命周期流转图
− UNINITIALIZED:未初始状态,为临时状态,Ability被创建后会由UNINITIALIZED状态进入INITIAL状态。
− INITIAL:初始化状态,也表示停止状态,表示当前Ability未运行,Ability被启动后由INITIAL态进入INACTIVE状态。
− INACTIVE:未激活状态,表示当前窗口已显示但是无焦点状态,由于Window暂未支持焦点的概念,当前状态与ACTIVE一致。
− ACTIVE:前台激活状态,表示当前窗口已显示,并获取焦点,Ability在退到后台之前先由ACTIVE状态进入INACTIVE状态。
− BACKGROUND:后台状态,表示当前Ability退到后台,Ability在被销毁后由BACKGROUND状态进入INITIAL状态,或者重新被激活后由BACKGROUND状态进入ACTIVE状态。
PageAbility类型Ability生命周期回调,如图2-7所示。
![]()
图2-7 PA的Ability生命周期回调图
ServiceAbility类型Ability生命周期回调,如图2-8所示。
![]()
图2-8 SA的Ability生命周期回调图
2.2.3 功能/规格详述
表2-6 元能力子系统规格表
[size=10.5000pt]序号
| [size=10.5000pt]模块
| [size=10.5000pt]功能
| [size=10.5000pt]描述
|
1
| Ability管理模块
| 通过修改配置来更新配置
| AbilityManager模块提供对Ability相关信息和状态信息进行获取、新增、修改等能力。
|
获取Ability运行相关信息
|
获取系统的内存信息
|
2
| App管理模块
| 获取有关运行进程的信息
| appManager模块提供App管理的能力,包括获取应用程序的内存大小、获取有关运行进程的信息等。
|
通过包名终止进程
|
通过包名清除应用数据
|
3
| 应用程序Context模块
| 获取应用程序的本地根目录
| Context模块提供了ability或application的上下文的能力,包括允许访问特定于应用程序的资源、请求和验证权限等。
|
验证系统中运行的特定pid和uid是否允许指定的权限
|
从系统请求某些权限
|
获取有关当前应用程序的信息
|
获取当前ability的捆绑包名称
|
获取有关当前进程的信息,包括进程id和名称
|
获取当前ability的ohos.bundle.ElementName对象
|
获取当前进程的名称
|
获取调用ability的包名称
|
获取该应用程序的内部存储目录
|
获取内部存储器上此应用程序的文件目录
|
获取Ability或应用的分布式文件路径
|
获取此应用的类型
|
获取应用的ModuleInfo对象
|
获取应用的版本信息
|
查询当前归属Ability详细信息
|
获取应用上下文信息
|
获取应用程序的外部缓存目录
|
4
| DataAbilityHelper模块
| 在指定的远程路径中打开文件
| 操作DataAbility的模块,包括数据库记录的增删改查。
|
注册观察者以观察给定uri指定的数据callback通知
|
注消观察者以停止观察给定uri指定的数据callback通知
|
获取给定URI指定数据的MIME类型
|
获取支持的文件的MIME类型
|
将引用数据功能的给定uri转换为规范化uri
|
将由normalizeUri(uri)生成的给定规范化uri转换为非规范化uri
|
通知已注册的观察者uri指定的数据资源的更改
|
将单个数据记录插入数据库
|
将多个数据记录插入数据库
|
从数据库中删除一个或多个数据记录
|
查询数据库中的数据
|
更新数据库中的数据记录
|
5
| DataUriUtils模块
| 获取附加到给定uri的路径组件末尾的ID
| DataUriUtils模块提供用于处理使用DataAbilityHelper方案的对象的实用程序类的能力,包括获取、添加、更新给定uri的路径组件末尾的ID。
|
将给定ID附加到给定uri的路径组件的末尾
|
从给定uri的路径组件的末尾删除ID
|
更新指定uri中的ID
|
6
| FeatureAbility模块
| 启动新的FA模型的Page Ability
| FeatureAbility模块提供带有UI设计与用户交互的能力,包括启动新的ability、获取dataAbilityHelper、设置此Page Ability、获取当前Ability对应的窗口、连接服务等。
|
获取dataAbilityHelper
|
启动一个ability,并在该ability被销毁时返回执行结果
|
设置Page Ability将返回给调用者的结果代码和数据并终止此Page Ability
|
检查Ability的主窗口是否具有窗口焦点
|
获取从Ability发送的Want
|
获取应用上下文
|
销毁此Page Ability
|
将当前ability连接到指定ServiceAbility
|
断开与指定ServiceAbility的连接
|
获取当前Ability对应的窗口
|
连接成功时的回调函数
|
ConnectAbility调用失败时的回调函数
|
7
| 任务管理模块(missionManager)
| 注册系统任务状态监听
| missionManager模块提供系统任务管理能力,包括对系统任务执行锁定、解锁、清理、切换到前台等操作。
|
取消任务状态监听
|
获取任务信息
|
获取所有任务信息
|
获取任务快照,以回调函数的方式返回快照内容
|
锁定指定任务id的任务
|
解锁指定任务id的任务
|
清理指定任务id的任务,无论该任务是否被锁定
|
清理所有未锁定的任务
|
把指定任务id的任务切到前台
|
8
| particleAbility模块
| 启动指定的particleAbility
| particleAbility模块提供了Service类型Ability的能力,包括启动、停止指定的particleAbility,获取dataAbilityHelper,连接、断开当前Ability与指定ServiceAbility等。
|
终止particleAbility
|
获取dataAbilityHelper。
|
向系统申请长时任务
|
向系统申请取消长时任务
|
将当前ability连接到指定ServiceAbility
|
断开与指定ServiceAbility的连接
|
9
| ServiceExtensionContext模块
| 启动指定的Ability
| SeServiceExtensionContext模块提供ServiceExtensionAbility具有的能力和接口,包括启动、停止、绑定、解绑Ability。
|
停止Ability自身
|
将一个Ability与服务类型的Ability绑定
|
将一个Ability与绑定的服务类型的Ability解绑
|
10
| WantAgent模块
| 创建WantAgent
| WantAgent模块提供了触发、取消、比较WantAgent实例和获取bundle名称的能力,包括创建WantAgent实例、获取实例的用户ID、获取want信息等。
|
获取WantAgent实例的包名
|
获取WantAgent实例的用户ID
|
获取WantAgent对象的want
|
取消WantAgent实例
|
主动激发WantAgent实例
|
判断两个WantAgent实例是否相等
|
11
| ServiceExtensionAbility模块
| Extension生命周期回调
| Extension生命周期回调
1. onCreate,在创建时回调,执行初始化业务逻辑操作。
2. onDestroy,在销毁时回调,执行资源清理等操作。
3. onRequest,如果是startAbility拉起的服务,会在onCreate之后回调。每次拉起服务都会回调,startId会递增。
4. onConnect,如果是connectAbility拉起的服务,会在onCreate之后回调。返回一个RemoteObject对象,用于和客户端进行通信。
5. onDisconnect,断开服务连接时回调。
6. onReconnect,当新客户端在所有以前的客户端连接之后尝试连接到服务扩展时调用。
|
12
| AbilityStage回调
| AbilityStage回调
| AbilityStage回调,仅在Stage模型下使用。
1. onCreate,当应用创建时调用。
2. onAcceptWant,启动一个specified ability时触发。
3. onConfigurationUpdated,发生全局配置变更时回调。
|
13
| Ability生命周期回调
| Ability生命周期回调
| Ability生命周期回调
1. onCreate,Ability创建时回调,执行初始化业务逻辑操作。
2. onDestroy,在Ability销毁时回调,执行资源清理等操作。
3. onWindowStageCreate,当WindowStage创建后调用。
4. onWindowStageDestroy,当WindowStage销毁后调用。
5. onForeground,当应用处于前台时触发。
6. onBackground,当应用处于后台时触发。
|
14
| 应用看护
| 设置看门狗看护应用,设置喂狗间隔
| 设置看门狗看护应用,设置喂狗间隔。
|
15
| 应用进程的内存监听
| 注册/取消注册应用进程的内存监听
| 监听内存状态,在晚上2-3点间每10分钟监听一次,应用进程内存超过500MB时停止应用进程。
|
2.3 包管理子系统
2.3.1 子系统概述
包管理子系统是系统基础能力子系统集的应用程序框架的一部分,包管理子系统负责应用安装包的管理,提供安装包的信息查询、安装、更新、卸载和包信息存储等能力。
2.3.2 技术架构图
![]()
图2-9 包管理子系统技术架构图
2.3.3 功能/规格详述
表2-7 包管理子系统规格表
[size=10.5000pt]序号
| [size=10.5000pt]模块
| [size=10.5000pt]功能
| [size=10.5000pt]描述
|
1
| Bundle
| 获取应用信息
| 获取安装的应用信息(ApplicationInfo)。
l 通过bundle名称获取指定应用的信息
l 获取指定用户下所有已安装的应用信息
l 查询应用是否启用
|
获取Bundle信息
| 获取系统中的BundleInfo。
l 通过bundle名称获取其BundleInfo
l 获取系统中所有可用的BundleInfo
|
获取Hap包中的bundle信息
| 获取Hap包中的bundle信息
|
获取Ability信息
| l 通过包名称和abilityName获取Ability信息。
− 获取完整的Ability信息
− 获取应用名称
− 查询Ability是否启用
− 获取对应Icon的PixelMap
l 通过want获取Ability信息。
|
获取拉起指定应用的want对象
| 获取拉起指定应用的want对象
|
根据uid获取应用包名
| 根据uid获取应用包名
|
查询指定的ExtensionAbilityInfo
| 查询指定的ExtensionAbilityInfo
|
清除应用缓存数据
| 清除指定应用程序的缓存数据
|
2
| BundleInstaller
| 安装应用
| 支持覆盖安装、多hap安装
|
卸载应用
| 卸载应用
|
3
| innerBundleManager
| 获取桌面应用信息
| 获取桌面应用信息。
l 根据包名获取指定的桌面应用信息
l 获取系统中所有的桌面应用信息
|
获取快捷方式信息
| 根据给定的包名获取快捷方式信息
|
4
| ZIP
| 压缩文件
| 压缩文件
|
解压缩文件
| 解压缩文件
|
5
| khbundle
| 在线升级系统应用
| 在线升级系统应用,并启动KeepAlive为true的应用。
|
卸载系统应用
| 卸载系统应用
|
2.4 升级子系统
2.4.1 子系统概述
升级子系统主要提供对设备远程升级能力,即OTA升级。OTA升级方式支持Push机制。
由云端触发是否升级,设备端收到升级消息后,自动触发下载和升级动作,并上报升级结果到云端。
2.4.2 技术架构图
![]()
图2-10 Push机制功能技术架构图
2.4.3 功能/规格详述
2.4.3.1 升级子系统
![]()
图2-11 升级子系统技术架构图
升级子系统用来支持设备的OTA升级。整个升级子系统包括如下几块:
升级包制作工具是使用python开发,运行在PC端,用来制作升级包的工具。它首先会打包各个升级镜像,然后对升级包进行签名,同时生成升级包执行脚本,最后制作出升级包。工具生成升级脚本,设备侧解析执行脚本,最终完成所有的升级动作。
升级服务提供系统版本检测、版本下载、版本校验、触发升级的能力。
升级包安装是升级子系统的核心功能,主要包括:
a. 从misc分区获取升级命令,根据不同的命令执行不同的任务。
b. 对升级包进行解压和合法性校验。
c. 启动升级进程,并解析出升级脚本。
d. 根据升级脚本安装各个组件包。
e. 完成升级后,进行后台处理。如清理升级包,记录升级状态等。
升级消息服务提供Push机制的升级消息接收、触发版本下载和升级动作、固件版本上报、升级结果上报、响应版本请求等消息处理能力。
2.4.3.2 升级包制作
制作OTA全量升级包的做包工具的目录结构如图2-12所示。
![]()
图2-12 制作OTA包的做包工具目录结构图
目录结构说明如下:
- {component_n}为待升级的组件,包括镜像文件等。
- BOARD.list中配置当前升级包所支持的产品列表。
- VERSION.mbn中配置当前升级包所支持的版本范围。
- rsa_private_key2048.pem表示用于升级包签名的私钥文件。
- updater_specified_config.xml中则配置待升级的组件的相关信息。
通常每次制作OTA升级包时都需要去组件配置文件中去配置相应的组件名、组件id、升级包类型等信息,然后再从配置文件中解析出相应的组件打入升级包中,这使得做包的工作极为繁琐且重复,自由度不高。
将升级包制作命令中进行优化,可以在命令中自由指定待升级的组件将其打入升级包中,不需要再去填写组件配置文件后再从中解析,这样极大地降低了升级包制作的重复性,提高了其自由度。
升级包制作人员制作OTA全量升级包的具体操作步骤,如图2-13所示。
![]()
图2-13 制作OTA包的做包步骤
操作步骤说明如下:
- 创建一个目标文件夹来存放待升级的相关组件和配置文件。
- 将待升级的组件,包括镜像放入1中所创建的目标文件夹的根目录下。
- 在组件配置文件中填写升级包版本号,该版本号必须在VERSION.mbn所支持的版本范围内。
- 在BOARD.list中配置当前升级包所支持的产品列表。
- 在VERSION.mbn中配置当前升级包所支持的版本范围。
- 在Linux环境下执行升级包制作命令。
通过解析升级包制作命令适配组件制作OTA升级包的具体操作步骤如图2-14所示。
![]()
图2-14 解析升级包制作命令适配组件制作OTA包的步骤
操作步骤说明如下:
- 将制作升级包涉及到的参数进行初始化操作。
- 解析升级包制作命令。
- 根据步骤2中解析到的参数找到相应的配置文件获取升级信息。
- 创建升级脚本对象。
- 根据步骤2中解析到的参数指定的分区表创建升级分区。
- 判断是否升级updater分区,若升级的话则对updater镜像进行相应的处理,反之则根据命令行参数对升级包类型进行判断。
- 根据步骤2中解析到的参数对升级包类型进行判断,并对其对应的镜像进行相关处理生成update.bin文件。
- 生成.bin文件之后进行签名操作。
- 根据升级操作生成相对应的升级脚本和脚本解释器。
- 将升级脚本、脚本解释器以及.bin文件等压缩合并形成最后的升级包。
2.4.3.3 设备端升级方式
Push机制升级由云端触发是否升级,设备端升级消息服务在收到升级消息后,自动触发升级服务的下载功能,下载完成后自动完成升级动作,并上报升级结果到云端。
2.4.3.4 升级注意事项
为确保OTA可以正常升级,在OTA包下载完成后,要求剩余空间大小不低于50MB。如果在OTA升级包下载后出现无法搜到包等异常,请删除部分文件,保证剩余空间至少为OTA升级包大小的2倍后再尝试重新下载和安装。
注意:
OTA升级过程中,确保设备不断电,否则可能导致系统无法启动、需要重新烧录固件。
2.4.4.5 系统组件升级
系统组件是指SDK Public API层以下的系统服务,而非传统应用包。系统组件升级允许系统开发者在满足依赖接口ABI(Application Binary Interface)稳定的前提下,将系统按系统能力服务进行解耦,实现独立打包、独立升级。系统组件升级可实现系统的模块解耦,各组件可独立于OTA版本进行发布和演进。
目前支持升级的系统组件如表2-8所示。
表2-8 系统组件规格表
[tr]序号系统组件描述[/tr]
| 1 | kh_deviceauth_service | 分布式组网 |
| 2 | kh_link_service | 配网 |
| 3 | kh_qrdetector_service | 扫码 |
| 4 | kh_audio_magic_service | TTS |
| 5 | kh_dhardware_commonser | 分布式屏幕 |
| 6 | kh_uart_service | 串口服务 |
| 7 | Kh_khability_service | 元能力服务 |
| 8 | kh_dinput_src | 分布式屏幕反控-source |
| 9 | kh_dinput_sink | 分布式屏幕反控-sink |
2.5 时间时区子系统
2.5.1 子系统概述
时间时区子系统属于系统基本能力子系统集,提供管理系统时间时区和定时的能力。
统一管理系统时间时区,包括设置/获取系统时间、日期、时区,同时提供获取系统启动时间。
提供系统定时器能力,包括定时器的创建、启动、停止和销毁。定时器类型分为以下三种:
− 系统启动时间计时类定时器
− 系统当前时间计时类定时器
− 唤醒类定时器
2.5.2 技术架构图
![]()
图2-15 时间组件技术架构图
2.5.3 功能/规格详述
2.5.3.1 时间组件
表2-9 时间组件规格表
[size=10.5000pt]序号
| [size=10.5000pt]模块
| [size=10.5000pt]功能
| [size=10.5000pt]描述
|
1
| 系统时间
| 设置系统时间(时间戳)
| 1970-01-01至今毫秒数。
|
获取系统时间(时间戳)
| 时间戳,1970-01-01至今毫秒数。
|
获取系统启动以来的运行时间
| 不包括深度运行时间。
|
获取系统启动时间
| 包括深度运行时间。
|
设置系统时间(Date格式)
| -
|
获取系统时间(Date格式)
| -
|
设置系统时区
| 系统支持的时区见表2-10。
|
获取系统时区
| 系统支持的时区见表2-10。
|
2
| 定时器[size=10.5000pt]
| 创建定时器
| -
|
开启定时器
| -
|
停止定时器
| -
|
销毁定时器
| -
|
3
| NTP对时
| 设置NTP服务器
| -
|
NTP开关
| 打开NTP对时后,系统将自动从NTP服务器同步网络时间。
|
2.5.3.2 系统时区
表2-10 系统时区表
1
| Antarctica/McMurdo
| AQ
| 12
|
2
| America/Argentina/Buenos_Aires
| AR
| -3
|
3
| Australia/Sydney
| AU
| 10
|
4
| America/Noronha
| BR
| -2
|
5
| America/St_Johns
| CA
| -3
|
6
| Africa/Kinshasa
| CD
| 1
|
7
| America/Santiago
| CL
| -3
|
8
| Asia/Shanghai
| CN
| 8
|
9
| Asia/Nicosia
| CY
| 3
|
10
| Europe/Berlin
| DE
| 2
|
11
| America/Guayaquil
| CEST
| -5
|
12
| Europe/Madrid
| ES
| 2
|
13
| Pacific/Pohnpei
| FM
| 11
|
14
| America/Godthab
| GL
| -2
|
15
| Asia/Jakarta
| ID
| 7
|
16
| Pacific/Tarawa
| KI
| 12
|
17
| Asia/Almaty
| KZ
| 6
|
18
| Pacific/Majuro
| MH
| 12
|
19
| Asia/Ulaanbaatar
| MN
| 8
|
20
| America/Mexico_City
| MX
| -5
|
21
| Asia/Kuala_Lumpur
| MY
| 8
|
22
| Pacific/Auckland
| NZ
| 12
|
23
| Pacific/Tahiti
| PF
| -10
|
24
| Pacific/Port_Moresby
| PG
| 10
|
25
| Asia/Gaza
| PS
| 3
|
26
| Europe/Lisbon
| PT
| 1
|
27
| Europe/Moscow
| RU
| 3
|
28
| Europe/Kiev
| UA
| 3
|
29
| Pacific/Wake
| UM
| 12
|
30
| America/New_York
| US
| -4
|
31
| Asia/Tashkent
| UZ
| 5
|
2.6 输入法框架子系统
2.6.1 子系统概述
输入法框架子系统属于系统基础能力子系统集,主要作用是拉通应用和输入法,保证应用可以通过输入法进行文本输入。在编辑属性的控件中进行点击操作,即可通过输入法框架调起默认输入法应用;通过输入法应用可以进行打字,并上屏输入字符到应用客户端。
2.6.2 技术架构图
![]()
图2-16 输入法框架技术架构图
2.6.3 功能/规格详述
表2-11 输入法框架规格表
[size=10.5000pt]序号
| [size=10.5000pt]模块
| [size=10.5000pt]功能
| [size=10.5000pt]描述
|
1
| 输入法框架
| 设置输入法
| -
|
隐藏输入法
| -
|
2
| 输入法服务
| 输入法绑定成功事件订阅
| 支持订阅/取消订阅输入法绑定成功事件
|
停止输入法应用事件订阅
| 支持订阅/取消订阅停止输入法应用事件
|
设置调用窗口事件订阅
| 支持订阅/取消订阅设置调用窗口事件
|
输入法事件订阅
| 支持订阅/取消订阅输入法事件
|
硬键盘事件订阅
| 支持订阅/取消订阅硬键盘事件
|
光标变化事件订阅
| 支持订阅/取消订阅光标变化事件
|
文本选择变化事件订阅
| 支持订阅/取消订阅文本选择变化事件
|
文本变化事件订阅
| 支持订阅/取消订阅文本变化事件
|
隐藏输入法
| -
|
获取输入文本
| 获取光标前/后固定长度的文本
|
删除输入文本
| 删除光标前/后固定长度的文本
|
发送功能键
| -
|
插入文本
| 在光标指定位置插入文本
|
移动光标
| -
|
获取编辑框属性值
| -
|
2.7 窗口子系统
2.7.1 子系统概述
窗口子系统提供窗口管理和Display管理的基本能力,是系统的基础子系统。
该子系统主要包含两个部分:窗口管理和屏幕管理。
2.7.2 技术架构图
![]()
图2-17 窗口子系统技术架构图
应用进程窗口管理接口层,提供窗口对对象抽象和窗口管理接口,对接原能力和UI框架。
应用进程Display管理接口层,提供Display信息抽象和Display管理接口。
窗口管理服务,提供窗口布局、Z序控制、窗口树结构、窗口拖拽、窗口快照等能力,并提供窗口布局和焦点窗口给多模输入。
Display管理服务,提供Display信息、屏幕截图、屏幕亮灭和亮度处理控制,并处理Display与Screen映射关系。
2.7.3 功能/规格详述
窗口子系统具备的功能和规格,主要是以接口的形式对外展现。
2.7.3.1 屏幕属性
屏幕属性提供管理显示设备的一些基础能力,包括获取默认显示设备的信息,获取所有显示设备的信息以及监听显示设备的插拔行为。
App通过如下接口获得屏幕属性相关信息,如表2-12所示。
表2-12 屏幕属性规格表
[tr]模块功能[/tr]
| ohos.display (屏幕属性) | 获取当前默认的display对象 |
| 获取当前所有的display对象 | |
| 开启display变化的监听 | |
| 关闭display变化的监听 | |
2.7.3.2 窗口管理
窗口提供管理窗口的一些基础能力,包括对当前窗口的创建、销毁、各属性设置等。
表2-13 窗口管理规格表
[size=10.5000pt]模块
| [size=10.5000pt]功能
|
ohos.window (窗口)
| 创建子窗口
|
查找id所对应的窗口
|
获取当前应用内最后显示的窗口
|
开启状态栏、导航栏属性变化的监听
|
关闭状态栏、导航栏属性变化的监听
|
隐藏当前窗口
|
显示当前窗口
|
销毁当前窗口
|
移动窗口位置(窗口在x轴、y轴方向移动的值)
|
改变当前窗口大小
|
设置窗口类型
|
获取当前窗口的属性
|
获取窗口内容规避的区域(如系统的系统栏区域)
|
设置是否为全屏状态
|
设置窗口的布局是否为全屏显示状态(全屏状态下状态栏、导航栏仍然显示)
|
设置导航栏、状态栏的可见模式
|
设置窗口内导航栏、状态栏的属性
|
为当前窗口加载具体页面内容
|
判断当前窗口是否已显示
|
开启窗口尺寸变化的监听
|
关闭窗口尺寸变化的监听
|
开启系统窗口规避区变化的监听
|
关闭系统窗口规避区变化的监听
|
设置点击时是否支持切换焦点窗口
|
设置窗口是否为可触状态
|
2.7.3.3 屏幕截图
提供屏幕截图的能力,截取屏幕时支持设置截取的区域、大小等图像信息。
表2-14 屏幕截屏规格表
[tr]模块功能[/tr]
| ohos.screenshot (屏幕截图) | 获取屏幕截图,截屏数据保存在PixelMap对象中 |
2.7.3.4 屏幕异显
支持将副屏设置为异显模式,此时App可显示在副屏。
实现的效果:应用A显示在主屏上,应用B显示在副屏上,并且用户可以同时与应用A和应用B进行交互。
将App显示到副屏的步骤:
1. 获取所有screen信息。
2. 调用@ohos.khScreen模块的makeAlone接口,将副屏切换到异显模式,此时已具备副屏显示App的条件。
3. 获得所有display信息。
4. 携带获得的副屏display id调用应用程序框架的启动App接口,此时App会显示到对应副屏上。
2.8 多模输入子系统
2.8.1 子系统概述
多模输入子系统应用于标准系统之上,为设备提供触控、键盘、鼠标等输入能力。该子系统将输入事件上报到窗口管理和ArkUI框架,ArkUI框架根据上报的事件再次封装,给应用提供接口。多模输入系统主要用于接收按键,触摸等输入事件,并且会对这些原始输入事件进行处理,之后再对这些事件进行派发。同时多模输入系统还提供了注入事件的接口,应用可以通过调用这个接口产生输入事件,然后将该输入事件注入到输入系统中进行处理。多模输入是面向用户提供丰富多样的人机交互方式,在持续完善支持传统输入的基础上,多模输入还会发挥分布式优势,提升跨设备交互体验,面向新场景、新业务提供系统级支撑能力。
2.8.2 技术架构图
![]()
图2-18 多模输入子系统技术架构图
多模输入子系统分为两大部分:
- InputManager:用于与窗口进行交互,运行在应用进程中。
- InputManagerService:这部分是多模输入子系统服务程序,运行在多模输入进程中,这两部分之间是通过socket进行IPC通信。
多模输入系统的服务的程序通过LibInput接口读取驱动上报的输入事件,通过InputEventHandler对事件进行加工处理,通过EventDispatch对输入事件进行派发,通过socket通信的方式传到客户端。客户端将事件派发到WindowManager。
InputManagerService由ServerMsgHandler、TimeManage、MMIService、InputEventHandler、EventDispatch、SInput、InputEventMonitorManager、EventFilterService、InterceptorManagerGlobal和InputWindowManager子模块组成。
- ServerMsgHandler:服务端消息处理单元,用于处理从客户端传过来的消息。
- TimeManage:用于管理是否是长按事件。
- MMIService:多模输入系统的核心线程,通过epoll_wait机制不断的读取底层上报上来的输入事件。
- InputEventHandler:用于对输入事件进行封装和处理。
- EventDispatch:用于对输入事件进行派发。
- SInput:用于与libinput进行交互。
- InputEventMonitorManager:对输入事件进行监听。
- EventFilterService:对输入事件进行过滤。
- InterceptorManagerGlobal:对输入事件进行截获,截获的输入事件不继续进行派发。
- InputWindowManager:与窗口相关,比如查找输入事件的派发的目标窗口,输入事件的坐标的转换,鼠标图标的显示。
InputManager由ClientMsgHandler、InputManagerImpl、InputInterceptorManager和InputMonitorManager子模块组成。
- ClientMsgHandler:客户端消息处理单元,用于处理从服务的传过来的消息。
- InputManagerImpl:多模输入对外提供的接口,其他模块可以调用该模块里的接口进行调用。
- InputInterceptorManager:对外提供对事件进行截获的接口。
- InputMonitorManager:对外提供对事件进行监听的接口。
2.8.3 功能/规格详述
表2-15 多模子系统规格表
[size=10.5000pt]模块
| [size=10.5000pt]功能
| [size=10.5000pt]描述
|
多模输入
| 触摸屏
| 支持触摸屏的触摸输入
|
键盘
| 支持键盘输入
|
鼠标
| 支持鼠标输入
|
按键的事件订阅
| 支持订阅/取消按键事件
|
注入事件
| 支持注入按键事件
|
2.9 基础通信子系统
2.9.1 子系统概述
基础通信子系统提供电话服务、以太网通信、Wi-Fi通信、蓝牙通信、NFC服务、网络优选以及多种网络协议等。
2.9.2 电话服务
2.9.2.1 功能概述
电话服务提供SIM卡、搜网、蜂窝数据等蜂窝移动网络基础通信能力,可管理多类型数据网络连接,为应用开发者提供便捷一致的通信API。
2.9.2.2 技术架构图
![]()
图2-19 电话服务框架图
2.9.2.3 功能/规格详述
核心服务模块主要功能是初始化SIM卡服务、搜网服务和RIL管理,以及获取RIL Adapter服务。通过注册回调服务,实现与RIL Adapter进行通信;通过发布订阅,来实现与各功能模块的通信。
蜂窝数据模块依赖于core_service核心服务、ril_adapter。具有蜂窝数据激活、蜂窝数据异常检测与恢复、蜂窝数据状态管理、蜂窝数据开关管理、APN管理、APN切换、网络管理交互等功能。
状态注册主要负责提供电话服务子系统各种消息事件的订阅以及取消订阅的API。事件类型包括网络状态变化、信号强度变化、小区信息变化、蜂窝数据连接状态变化等等。
2.9.3 以太网通信
2.9.3.1 功能概述
以太网模块提供有线网络的基础通信能力,为应用开发者提供便捷一致的通信API。同时也可将以太网网络通过AP热点共享至其它设备。
2.9.3.2 技术框架图
![]()
图2-20 以太网通信技术框架图
2.9.3.3 功能/规格描述
支持通过DHCP动态获取IP/网关/子网掩码/DNS等参数配置,也可以设置静态网络环境参数。
提供网卡link up/down的消息事件订阅和取消订阅的API。
支持将以太网的网络通过AP热点共享至其它设备。
2.9.4 Wi-Fi通信
2.9.4.1 功能概述
基于Wi-Fi芯片驱动能力和自研系统平台能力,设计和开发Wi-Fi系统的能力平台(WI-FI子系统中间件),向下管理Wi-Fi芯片,向上提供Wi-Fi应用能力,使得自研系统上层应用和第三方开发者可以基于Wi-Fi平台能力设计和开发Wi-Fi应用。
2.9.4.2 技术架构图
![]()
图2-21 Wi-Fi通信技术框架图
WLAN组件子系统为用户提供WLAN基础功能、P2P(peer-to-peer)功能和WLAN消息通知的相应服务,让应用可以通过WLAN和其他设备互联互通。系统整体采用了分层设计的架构模式,根据需求及实际的业务场景,系统整体可以划分为4层。
主要是开发者自行开发的Wi-Fi相关功能的应用。通过调用Wi-Fi SDK对外提供的API实现对设备Wi-Fi的控制及其功能实现。这一层平台将会提供相关的API调用示例,以供参考。
Wi-Fi核心功能实现。直接为上层应用提供服务。根据其工作模式的不同分为四大业务服务模块,分别是Sta服务、AP服务、P2P服务、Aware服务,同时提供Scan服务以及DHCP功能。
为FrameWork层操作Wi-Fi硬件提供统一的接口服务,实现应用框架与硬件操作的分离。主要包括IDL、HAL适配器、扩展HAL模块、Wi-Fi硬件厂家提供的二进制库模块以及wpa_supplicant、hostapd模块。
包含Wi-Fi驱动,包括了对设备的一些基本的读写操作由Wi-Fi驱动移植人员编译进内核。
2.9.4.3 功能/规格详述
Wi-Fi通信提供了类似于无线终端的Station功能,STA本身并不接受无线的接入,它可以连接到AP(AccessPoint),一般无线网卡即工作在该模式。实现了Wi-Fi打开、关闭、连接、获取IP及漫游的状态及切换。
Wi-Fi通信提供了Wi-Fi普通扫描的功能。
Wi-Fi通信提供热点功能,实现发送2.4G或5G的Wi-Fi信号,实现Wi-Fi热点的打开、关闭、连接、切换AP,获取连接设备信息等功能,Wi-Fi热点安全等级支持WPA-PSK。
Wi-Fi通信提供P2P功能,P2P(peer-to-peer)网络又称为对等式网络,或者点对点网络。这是一种无中心的服务器、完全由用户群进行交换信息的互联网体系,P2P网络的每一个用户既是一个客户端,同时也具备服务器的功能。实现了P2P的打开、关闭、连接、建组、获取和设置P2P配置的功能。
2.9.5 蓝牙通信
2.9.5.1 功能概述
在KaihongOS标准系统软件中,蓝牙模块提供了与传统蓝牙相关的host管理和与低功耗蓝牙相关的BLE管理,为使用蓝牙通信提供了基本保障。同时,蓝牙模块包括GATT服务,服务自定义性强,为不同应用场景内数据交互提供了有效可靠的通道。
2.9.5.2 技术架构图
![]()
图2-22 蓝牙通信技术框架图
2.9.5.3 功能/规格详述
蓝牙Host管理主要是针对蓝牙本机的基本操作,包括打开和关闭蓝牙(包括传统蓝牙和BLE),设置和获取本机蓝牙名称,传统蓝牙的扫描和取消扫描周边蓝牙设备、获取本机蓝牙profile service列表,获取对其他设备的连接状态,获取、移除本机蓝牙(包括传统蓝牙和BLE)已配对的蓝牙设备或列表等操作。
其中,蓝牙名称最长为248字节。
KaihongOS标准系统软件中低功耗蓝牙的BLE设备交互时,会分为不同的角色,即中心设备和外围设备。中心设备负责扫描外围设备,发现广播信息;而外围设备负责发送广播信息。主要功能是BLE广播和扫描。中心设备根据指定状态获取外围设备;启动或停止BLE扫描、广播。
其中,BLE广播包有效载荷为31字节。
KaihongOS标准系统软件提供设置BLE广播白名单的功能。设备开启广播后,只允许白名单内设备进行BLE发现与连接,拒绝非法设备的操作。
BLE外围设备和中心设备建立GATT连接,通过该连接中心设备可以获取外围设备所支持的Service、Characteristic、Descriptor等数据。同时,中心设备可以向外围设备进行数据请求,并向外围设备写入Characteristic、Descriptor等特征值数据。两台设备建立连接后,其中一台作为GATT服务端,另一台作为GATT客户端。通常发送广播的外围设备作为服务端,负责扫描的中心设备作为客户端。
支持GATT长特征值数据读写,最长支持49KB数据读写。
2.9.6 网络优选
2.9.6.1 功能概述
当有多个网络(如以太网、Wi-Fi、蜂窝网络)同时使用时,会对各个网络开启网络检测机制,根据网络检测机制结果以及系统预设的网络优先级,对多个网络进行综合评分,选择最优的网络作为当前默认网络。
2.9.6.2 功能/规格详细描述
优先选择能够正常上网的网络(即能够访问互联网)。
若存在多个网络均能正常访问互联网的情况,则按照“以太网 > Wi-Fi > 蜂窝网络”的优先级进行使用。
2.9.7 网络协议
2.9.7.1 功能概述
网络协议栈模块提供MQTT(单实例MQTT、多实例MQTT)、CAN、WebSocket、Modbus、HTTP、HTTPS、TCP和UDP多种网络协议,为不同场景下的通信提供了多种选择。其中,MQTT、CAN、Modbus是KaihongOS标准系统软件的特有通讯协议,使KaihongOS标准系统软件在机器与机器(M2M)通信与物联网(IoT)的应用场景下也有优异的表现。
2.9.7.2 技术架构图
![]()
图2-23 MQTT协议框架图
![]()
图2-24 CAN协议框架图
![]()
图2-25 Modbus协议框架图
2.9.7.3 功能/规格详述
MQTT是一种轻量级通讯协议,基于发布/订阅模式,其低开销/低带宽占用的特点十分适合物联网场景的应用。MQTT协议提供多种服务质量(QoS)的消息订阅,设备与设备之间通过服务端(Broker)来通信。
CAN总线是一种串行通信协议,能有效地支持具有很高安全等级的分布实时控制。CAN总线的应用范围很广,从高速的网络到低价位的多路接线都可以使用CAN。
Modbus协议能够为连接不同类型总线或网络的设备之间提供客户端/服务端通信,KaihongOS标准系统软件提供的Modbus协议能够基于TCP或RTU进行通信,适应不同的应用场景。
2.9.8 NFC服务
2.9.8.1 功能概述
近距离无线通信技术(Near Field Communication,NFC) ,是一种非接触式识别和互联技术,可以在移动设备、消费类
电子产品、PC和智能设备间进行近距离无线通信。
NFC服务提供NFC开关控制、NFC标签发现和分发、NFC标签读写等业务功能。
2.9.8.2 技术架构图
![]()
图2-26 NFC通信技术框架图
2.9.8.3 功能/规格详述
主要用于操作及管理NFC Tag,电子设备通过NFC读取标签卡片后,根据标签卡片的类型匹配到一个或多个应用程序。前台读卡是指提前打开应用程序,并进入对应的NFC读卡页面后读卡,只会把读到的标签卡片信息分发给前台应用程序。
2.10 分布式软总线子系统
2.10.1 子系统概述
KaihongOS标准系统软件是基于OpenHarmony开发的新时代万物互联的操作系统,互联互通是它的特性之一。软总线则是实现互联互通的基础。软总线的概念相较于硬总线,打破了硬件
电路板的物理限制,通过无线短距通信技术,构建一条软总线连接在不同物理位置上的设备,用户可以根据需要组合设备进行设备通信。
分布式软总线子系统旨在为系统提供的通信相关的能力,包括:软总线通信、无感配网、无感组网等通信能力。
2.10.2 软总线通信
2.10.2.1 功能概述
软总线为应用和系统提供近场设备间分布式通信的能力,提供不区分通信方式的设备发现、连接、组网和传输功能。
2.10.2.2 技术架构图
![]()
图2-27 软总线技术框架图
KaihongOS标准系统软件中软总线架构如图2-27所示。开发者无须关注通讯方式与通讯协议,软总线为上层应用场景提供了统一的设备发现、设备组网和设备连接的能力,开发者可以使用软总线稳定地进行消息、字节和流传输等工作。
2.10.2.3 功能/规格详述
软总线提供了多设备自发现的能力。每台搭载KaihongOS标准系统软件的设备可以忽略设备之间的差异,只要处于同一局域网中,就可以自主感知其他设备的上线下线操作。
软总线提供了多设备鉴权认证的能力。不同类型、不同平台的设备可以基于软总线提供的接口进行鉴权认证,并将认证过的设备保存到可信设备列表里面;完成认证的设备即可通过软总线进行安全传输、跨设备通讯等。
软总线提供了消息、字节、流、文件传输四种模式,开发者可以使用软总线带来的高速低时延的通信能力。通过创建session的方法与其他设备建立通信通道,无须关注通信协议差异和设备差异,便可以与其他设备进行交互。设备之间使用消息和字节传输时延约30ms。流传输速率平均可达10MB/s(Wi-Fi 5G频段)。
软总线不仅支持不同设备间的消息、字节、文件和流的传输,同时在传输安全方面用户也无需担心。用户只需要将原始数据传递给软总线,软总线将会保障数据的安全传输。
软总线屏蔽了物理链路的差异,可以让各种不同能力的设备连接在起来进行通信。
− 在传输消息和字节消息时,使用TCP协议传输,保证消息的可达性。
− 在进行文件和流传输时,使用基于UDP开发的缓冲池协议和FillP协议。这些协议具有高吞吐率、高可靠性的特点,保证了软总线的高速传输性能。
软总线融合通信在原Wi-Fi链路基础能力上,融合了多种链路(Wi-Fi、BLE、以太网)的发现、组网、传输功能:
− 多链路融合场景下,同一设备在不同链路下的发现实现了合一,用户无需关注设备的发现链路来源。
− 多链路融合组网下,某一链路断开,不影响在线状态。
− 智能链路选择:多链路场景下,根据业务特征选择适当的链路传输。
− 针对设备链路级进行心跳监听,并根据链路的不同提供不同的心跳策略。在特定策略下(如高频短间隔心跳),心跳同时提供链路质量监控功能,检测链路时延、丢包率等。
注意:
当前版本的软总线通信特性兼容1.3.0及更高的版本,不兼容低于1.3.0的版本。
2.10.3 无感配网
2.10.3.1 功能概述
在KaihongOS标准系统软件中,无感配网模块提供了通过BLE进行设备发现和连接,从而进行配网信息交互。使用无感配网模块可以对KaihongOS设备进行近场配网,管理网络配置,简化网络配置过程。
2.10.3.2 技术架构图
![]()
图2-28 无感配网架构图
2.10.3.3 功能/规格详述
无感配网模块提供了多设备发现能力。每台搭载KaihongOS标准系统软件的设备可以指定配网设备和待配网设备,配网设备可以在5秒内发现其他待配设备,以对待配网设备进行Wi-Fi、以太网网络配置。
无感配网模块提供对发现的待配设备进行网络配置的管理。可以通过用户输入、自动获取本机连接的Wi-Fi信息、自动获取本机热点配置信息这三种方式得到网络配置信息。配置信息以用户无感方式传输到待配设备,使待配设备接入网络。设备加入网络后即可使用软总线组网或其他网络功能。
无感配网模块提供对连接以太网网线的待配设备进行IP配置。
搭载KaihongOS标准系统软件的设备支持向处于待配网状态、搭载KaihongOS轻量系统软件的设备发送配网信息,使搭载KaihongOS轻量系统软件的设备能够加入第三方热点设备的网络。
2.10.4 无感组网
2.10.4.1 功能概述
在KaihongOS标准系统软件中,无感组网是对安全快速认证组网的扩展。通过认证信息下发的方式,可以让不同设备之间快速建立可信设备认证关系。主要应用于工业大量设备场景和无屏设备等场景中,在不同设备之间下发相同的认证信息后,不同设备在无人工干预的条件下自动建立可信认证,为软总线通信提供安全保障。
2.10.4.2 技术架构图
![]()
图2-29 无感组网架构图
2.10.4.3 功能/规格详述
认证信息下发功能用于设置设备之间安全认证信息。用户通过开发集成此接口的SDK,可以支持蓝牙和云端等下发方式,满足不同场景的认证需求。当设备中下发认证信息后,设备会结合自身信息发起组网认证请求。设备认证通过后即建立可信关系,为软总线安全通信提供保障。
认证信息清除功能用于清除设备之间的安全认证信息。在大量设备之间建立认证关系网后,调用此接口清除设备的安全信息,可以将设备与其他设备的组网关系断开。设备组网关系断开后将不会再次组网,直到双方再次持有相同安全认证信息。
认证信息下发过程中,除了配置安全认证信息,还会配置权重。不同权重,影响了实际的组网拓扑模型。
− 权重50-50,组网会形成全连接网络。
− 权重0-100,组网会形成中心型网络。
− 权重100-100、0-0,无法进行组网。
星系组网App在4.1.2版本之前采用中心型网络配置,4.1.2及之后版本采用全连接网络模型配置。
2.11 媒体子系统
2.11.1 子系统概述
媒体子系统为开发者提供一套简单且易于理解的接口,使得开发者能够方便接入系统并使用系统的媒体资源。媒体子系统包含了音视频、图片、相机、媒体库和智能语音相关媒体业务。
2.11.2 技术架构图
![]()
图2-30 多媒体技术架构图
2.11.3 功能/规格详述
2.11.3.1 音视频功能
提供了
AVPlayer和
AVRecorder,用于播放、录制音视频。
AVPlayer
AVPlayer主要工作是将Audio/Video媒体资源(比如mp4/mp3/mkv/mpeg-ts等)转码为可供渲染的图像和可听见的音频模拟信号,并通过输出设备进行播放。AVPlayer提供功能完善一体化播放能力,应用只需要提供流媒体来源,不负责数据解析和解码就可达成播放效果。
- 音频播放:音乐类应用通过调用JS接口层提供的AVPlayer接口实现相应功能时,框架层会通过播放服务(Player Framework)将资源解析成音频数据流(PCM),音频数据流经过软件解码后输出至音频服务(Audio Framework),由音频服务输出至音频驱动渲染,实现音频播放功能。完整的音频播放需要应用、Player Framework、Audio Framework、音频HDI共同实现。
支持ogg、mp3、m4a等音频格式。
![]()
图2-31 音频播放外部模块交互图
- 视频播放:应用通过调用JS接口层提供的AVPlayer接口实现相应功能时,框架层会通过播放服务(Player Framework)解析成单独的音频数据流和视频数据流,音频数据流经过软件解码后输出至音频服务(Audio Framework),再至硬件接口层的音频HDI,实现音频播放功能。视频数据流经过硬件(推荐)/软件解码后输出至图形渲染服务(Graphic Framework),再输出至硬件接口层的显示HDI,完成图形渲染 。
支持MP4等视频格式。
![]()
图2-32 视频播放外部模块交互图
AVRecorder
AVRecorder主要工作是捕获音频信号,接收视频信号,完成音视频编码并保存到文件中,帮助开发者轻松实现音视频录制功能,包括开始录制、暂停录制、恢复录制、停止录制、释放资源等功能控制。它允许调用者指定录制的编码格式、封装格式、文件路径等参数。
- 音频录制:应用通过调用JS接口层提供的AVRecorder接口实现音频录制时,框架层会通过录制服务(Player Framework),调用音频服务(Audio Framework)通过音频HDI捕获音频数据,通过软件编码封装后保存至文件中,实现音频录制功能。
- 视频录制:应用通过调用JS接口层提供的AVRecorder接口实现视频录制时,先通过Camera接口调用相机服务(Camera Framework)通过视频HDI捕获图像数据送至框架层的录制服务,录制服务将图像数据通过视频编码HDI编码,再将编码后的图像数据封装至文件中,实现视频录制功能。
![]()
图2-33 音视频录制外部模块交互图
2.11.3.2 图片功能
图片开发的主要工作是将获取到的图片进行解码,将解码后的pixelmap编码成支持的格式,包含流程有:创建实例、读取图片信息、读写pixelmap、更新数据、打包像素、释放资源等。
2.11.3.3 相机功能
相机模块支持相机相关基础功能的开发,主要包括预览、拍照、录像等,支持MIPI摄像头和USB摄像头。包含的流程有:创建实例、参数设置、会话管理、拍照、录像、释放资源等。
![]()
图2-34 相机技术框架图
本地相机性能参数如下:
- 预览和拍照支持的分辨率:480P/720P/1080P
- 支持的帧率:26±3fps
2.11.3.4 媒体库功能
媒体库主要用于访问和修改用户等个人媒体数据信息(如音频、视频、图片、文档等)。
建议媒体库存储不超过500张,否则容易触发应用自动保护机制,导致已打开的相机、截屏或图库等使用媒体库的应用自动退出。
2.11.3.5 TTS智能语音功能
TTS是Text To Speech的缩写,即“从文本到语音”。在调用TTS的接口前,需要先通过createTTS()创建实例。然后调用实例的speak()接口,将传入的文字转换为语音并进行播报。TTS服务采用C/S模式,sepak接口调用后,会校验输入的文字,校验通过后创建任务并加入到本服务唯一的任务队列中,同时返回本次接口调用ID。任务队列中最多缓存32次调用,任务是异步处理,超出后将拒绝后续调用请求并返回相应错误码。服务进程内部串行处理队列中的任务,在处理过程中如果发生错误,可通过on(‘error’)接口抛出。
任务处理过程中会将text文本中的长句和段落根据标点符号进行分割,例如“据央视新闻消息,我国在太原卫星发射中心 使用长征二号丁运载火箭,成功将高分五号01A卫星发射升空,卫星顺利进入预定轨道,发射任务获得圆满成功”,会被分割为“据央视新闻消息”、“我国在太原卫星发射中心使用长征二号丁运载火箭”、“成功将高分五号01A卫星发射升空”、“卫星顺利进入预定轨道”、“发射任务获得圆满成功”依次处理。
支持中文和英文两种语言的语音播报:
单次请求的字符数不能超过50个,支持播报常用汉字,以及包含汉字、数字或大写字母的句子。
单次请求的字符数不能超过160个。支持播报包含英文单词、数字的句子。
2.12 文件管理子系统
2.12.1 子系统概述
文件管理子系统当前向应用程序提供用于IO的JS接口。其具体包括对应用文件目录下的应用文件进行查看、创建、读写、删除、移动、复制、获取属性等访问操作。
2.12.2 技术架构图
![]()
图2-35 文件管理子系统技术架构图
2.12.3 功能/规格详述
− 文件管理
对应用文件进行查询,复制,移动,删除,重命名,链接,同步等操作。
− 文件读写
应用创建文件,向文件中写入数据,从文件中读取数据。
− 目录管理
应用创建目录,遍历目录。
− 以流的形式读写文件
创建流,打开/关闭流,向流中写入数据,从流中读取数据,刷新流等。
− 使用读写接口时,需注意可选项参数offset的设置。对于已存在且读写过的文件,文件偏移指针默认在上次读写操作的终止位置。
− 使用流接口时,需注意流的及时关闭。同时流的异步接口应严格遵循异步接口使用规范,避免同步、异步接口混用。流接口不支持并发读写。
2.13 分布式数据管理子系统
2.13.1 子系统概述
分布式数据管理子系统支持单设备的各种结构化数据的持久化,以及跨设备之间数据的同步、共享功能。开发者通过分布式数据管理子系统,能够方便地完成应用程序数据在不同终端设备间的无缝衔接,满足用户跨设备使用数据的一致性体验。
2.13.2 关系型数据库
2.13.2.1 功能概述
关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。当应用卸载后,其相关数据库会被自动清除。
2.13.2.2 技术架构图
![]()
图2-36 关系型数据库运作机制
2.13.2.3 功能/规格详述
表2-16 关系型数据库规格表
[size=10.5000pt]模块
| [size=10.5000pt]接口
| [size=10.5000pt]描述
|
ohos.data.rdb
| getRdbStore
| 根据配置创建或打开数据库
|
deleteRdbStore
| 使用指定的数据库文件配置删除数据库
|
executeSql
| 执行SQL语句
|
RdbPredicates
| 构造关系型数据库(RDB)的谓词
|
query
| 根据指定条件查询数据库中的数据
|
update
| 根据RdbPredicates的指定实例对象更新数据库中的数据
|
insert
| 向目标表中插入一行数据
|
delete
| 根据rdbPredicates的指定实例对象从数据库中删除数据
|
2.13.3 用户首选项
2.13.3.1 功能概述
用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。当用户希望有一个全局唯一存储的地方,可以采用用户首选项来进行存储。Preferences会将该数据缓存在内存中,当用户读取的时候,能够快速从内存中获取数据。Preferences会随着存放的数据量越多而导致应用占用的内存越大,因此,Preferences不适合存放过多的数据,适用的场景一般为应用保存用户的个性化设置(字体大小,是否开启夜间模式)等。
2.13.3.2 技术架构图
![]()
图2-37 用户首选项技术框架图
2.13.3.3 功能/规格详述
− 获取用户首选项实例
要通过用户首选项实现数据持久化,首先要获取Preferences实例。读取指定文件,将数据加载到Preferences实例,用于数据操作。
− 写入数据
使用put()方法保存数据到缓存的Preferences实例中。在写入数据后,如有需要,可使用flush()方法将Preferences实例的数据存储到持久化文件。
− 读取数据
使用get()方法获取数据,即指定键对应的值。如果值为null或者非默认值类型,则返回默认数据。
− 删除数据
使用delete()方法删除指定键值对。
− 数据持久化
应用存入数据到Preferences实例后,可以使用flush()方法实现数据持久化。
− 订阅数据变更
应用订阅数据变更需要指定observer作为回调方法。订阅的Key值发生变更后,当执行flush()方法时,observer被触发回调。
− 删除指定文件
使用deletePreferences()方法从内存中移除指定文件对应的Preferences实例,包括内存中的数据。若该Preference存在对应的持久化文件,则同时删除该持久化文件,包括指定文件及其备份文件、损坏文件。
− Key键为string类型,要求非空且长度不超过80个字节。
− 如果Value值为string类型,可以为空,不为空时长度不超过8192个字节。
− 内存会随着存储数据量的增大而增大,所以存储的数据量应该是轻量级的,建议存储的数据不超过一万条,否则会在内存方面产生较大的开销。
− 当对应的键已经存在时,put()方法会修改其值。如果仅需要在键值对不存在时新增键值对,而不修改已有键值对,需使用has()方法检查是否存在对应键值对;如果不关心是否会修改已有键值对,则直接使用put()方法即可。
− 调用deletePreferences() 接口后,应用不允许再使用该Preferences实例进行数据操作,否则会出现数据一致性问题。且成功删除后,数据及文件将不可恢复。
2.14 分布式硬件子系统
2.14.1 子系统概述
超级终端是指多个设备互相协同,借助各个设备的优势能力为用户提供1+1>2的更优体验。分布式硬件子系统是超级终端中用于设备间外设能力共享的子系统,其管理超级终端内各个设备的硬件信息,纳入硬件资源池统一管理,实现设备间硬件能力的跨设备共享和调用能力,打破了设备边界,并通过软件定义各种新产品形态和体验。比如,
手机可以使用电视大屏幕显示,办公PC也能使用手机摄像头提供更强的摄像能力。
分布式硬件平台对超级终端中的所有设备的硬件资源池化都是基于硬件虚拟化组件来进行构建的,每一个硬件在平台上注册对应的虚拟硬件实例,虚拟硬件通过虚拟化组件实现与对应的物理硬件之间的交互,从而实现了对周边设备对应硬件的控制和数据传输。硬件资源池化基于驱动接口(HDI)完成硬件虚拟化,服务层各个业务子系统可以像使用本机硬件一样使用分布式硬件。
注意:
使用分布式特性(分布式相机、分布式屏幕等)的环境要求:软总线带宽>50Mb/s,时延<35ms。
2.14.2 分布式相机
2.14.2.1 功能概述
分布式相机是多个设备的相机同时协同使用的能力。分布式相机组件是为分布式硬件子系统提供这一能力的部件。本组件不直接对接应用,只向分布式硬件子系统提供C++接口。应用可以通过相机框架的接口使用分布式相机组件操作其他设备的Camera,使用方式与本地相机一致。
2.14.2.2 技术架构图
![]()
图2-38 分布式相机架构图
2.14.2.3 功能/规格详述
− 设备上线
设备上线后,分布式硬件管理框架同步上线设备的相机硬件信息并使能。使能成功后,系统中会新增分布式相机驱动并通知到相机框架。相机框架统一管理本地相机和分布式相机驱动;上层应用通过相机框架接口可以查询到分布式相机,并按照和本地相机相同的接口使用分布式相机。
− 设备下线
设备下线后,分布式硬件管理框架去使能下线设备的相机硬件。本地移除分布式相机驱动并通知到相机框架,此时下线设备的分布式相机不可用。
− 状态机
主控端通过调用分布式相机能力,使用被控端的摄像头进行预览、拍照、录像等。
− 数据传输
通过软总线连接主控端与被控端,接收/发送主控端的相机指令或被控端的图像信息。
− 数据处理
对相机框架返回的图像数据做处理(编解码、色彩空间转换、分辨率缩放、帧率调整、角度调整等)。
− 摄像头接口
支持MIPI摄像头、USB摄像头。
− USB热插拔
支持USB摄像头热插拔。
− 预览和拍照支持的分辨率:480P/720P/1080P
− 支持的帧率:26±3fps
− 1台发起端同时只能调用1台被控端
该版本的分布式相机特性不兼容低于4.1.2的版本。
2.14.3 分布式屏幕
2.14.3.1 功能概述
分布式屏幕是一种屏幕虚拟化能力,支持用户指定组网认证过的其他OpenHarmony设备的屏幕作为Display的显示区域。在分布式硬件子系统中,分布式屏幕组件提供跨设备屏幕能力调用,为OpenHarmony操作系统提供系统投屏、屏幕镜像、屏幕分割等能力的实现。
2.14.3.2 技术架构图
![]()
图2-39 分布式屏幕架构图
2.14.3.3 功能/规格详述
表2-17 分布式屏幕规格表
[size=10.5000pt]模块
| [size=10.5000pt]接口
| [size=10.5000pt]描述
|
| getAllScreens()
| 获取屏幕列表
|
makeMirror()
| 镜像投屏
|
closeVirtualScreen()
| 关闭投屏
|
startCaptureInput()
| 打开反控开关
|
stopCaptureInput()
| 关闭反控开关
|
startPullScreen()
| 反拉投屏
|
stopPullScreen()
| 停止反拉投屏
|
startPullInput()
| 开启反向拉反控
|
stopPullInput
| 停止反向拉反控
|
on()
| 分布式屏幕状态回调
|
− 分布式屏幕支持8小时镜像投屏,投屏分辨率支持1080P或1280P,画面帧率约为30fps。
− source端开启调用至sink端显示第一帧的时延5秒以内。
− source端与sink端的屏幕方向:支持相同屏幕方向;也支持一方为横屏,一方为竖屏。
− 分布式屏幕功能不支持多投一,强行投屏会导致异常。
− 该版本的分布式屏幕特性不兼容低于4.1.2的版本。
− 建议用户升级到新版本,再使用分布式屏幕特性。
2.15 DFX子系统
2.15.1 子系统概述
DFX子系统是为了提升软件质量设计的工具集,目前包含的内容主要有:日志自动上传和DFR打点数据上云特性。
2.15.2 日志自动上传
1.2.3.30 功能概述
提供日志本地存储和自动上传到超级设备运维管理平台的功能,且能够在云端在线查看、下载日志,亦可以查询指定设备的系统日志。
1.2.3.31 功能/规格详述
- 日志级别默认为INFO,可通过persist.khsyslog.level调整(D/I/W/E/F)。
- 日志自动上传默认开启,设置persist.khsyslog.auto.upload为false可关闭自动上传。
- 单个日志文件压缩前大小约为3MB,可通过persist.khsyslog.file.size修改。每写完一个hilog日志文件自动上传一次。
2.15.3 DFR打点数据上云
2.15.3.1 功能概述
OpenHarmony社区的HiSysEvent组件提供OpenHarmony埋点接口,通过在关键路径埋点记录系统在运行过程中的重要信息,辅助开发者定位问题。KaihongOS通过采集HiSysEvent数据上传到超级设备运维管理平台。
2.15.3.2 技术架构图
![]()
图2-40 DFR技术架构图
2.15.3.3 功能/规格详述
设备侧数据采集
- 提供系统属性开关配置:persist.khmonitor.switch。
当开关为true时特性打开,自动采集系统事件上传到超级设备运维管理平台。开关默认值为true。
- 当前需要采集系统上下文数据的HiSysEvent:CPP_CRASH、JS_ERROR、APP_FREEZE、SYS_FREEZE。
- 不属于以上4种故障的其他HiSysEvent,以非实时定量采集的方式上传到超级设备运维管理平台。
运维平台故障管理
- 提供故障数据的列表展示功能,显示故障所属领域、故障名称等关键信息。
- 支持事件管理,事件信息展示与筛选。
2.15.4 内存泄露检测
2.15.4.1 功能概述
在系统运行过程中对所有进程的内存占用情况进行监控,当识别到进程存在内存泄露时,及时上报云端,并在系统相对空闲时查杀内存泄露严重的进程。
2.15.4.2 技术架构图
![]()
图2-41 内存泄露检测技术架构图
2.15.4.3 功能/规格详述
− 统计识别:7天的周期内,应用进程每日增长超过20MB或者系统服务进程每日增长10MB视为内存泄露,上报超级设备运维管理平台。
− 类线性增长识别:每2小时扫描一次进程内存信息,经过去顶算法筛选后,2天及以上单调递增,视为内存泄露,上报超级设备运维管理平台。
− 每日凌晨0点触发,以进程首次被扫描到时的内存作为起始内存,对内存累计增长达到300MB的应用进程或者内存累计增长达到100MB的系统服务进程进行查杀。
− 支持豁免名单配置,豁免初始名单进程包括init、samgr、foundation、appspawn。
2.15.5 资源指标采集
2.15.5.1 功能概述
系统运行过程中采集系统内存、CPU、磁盘、网络等资源占用数据上报超级设备运维管理平台,通过超级设备运维管理平台可视化地监控设备运行状况。
2.15.5.2 技术架构图
![]()
图2-42 资源指标采集技术架构图
2.15.5.3 功能/规格详述
- 协议规格:采用OTLP协议,使用grpc传输经过protobuf编码的指标数据。
- 指标范围:系统CPU利用率、系统内存占用、存储IO占用、存储空间占用、网络收发字节数、网络收发包数、进程CPU利用率、进程内存占用、设备运行容器数。
2.16 安全子系统
2.16.1 子系统概述
安全子系统包括系统安全、数据安全、应用安全等功能,为KaihongOS标准操作系统提供有效保护应用和用户数据的能力。
2.16.2 设备安全等级管理与数据传输管控
2.16.2.1 功能概述
分布式技术可以实现不同设备的资源融合,将多个设备虚拟成一个“超级虚拟终端”。在这个“超级虚拟终端”的内部,处理、流转各类用户数据时,需要确保各个节点不因安全能力薄弱,成为整个“超级虚拟终端”的薄弱点,因此引入设备安全等级管理模块来解决这类问题。
2.16.2.2 功能/规格详述
表2-18 设备安全等级管理与数据传输管控规格表
[size=10.5000pt]序号
| [size=10.5000pt]模块
| [size=10.5000pt]接口
| [size=10.5000pt]描述
|
1
| device_security_level
| int32_t RequestDeviceSecurityInfo(const DeviceIdentify *identify, const RequestOption *option, DeviceSecurityInfo **info);
| 请求获取某设备的设备安全等级信息(同步接口)。
|
int32_t RequestDeviceSecurityInfoAsync(const DeviceIdentify *identify, const RequestOption *option, DeviceSecurityInfoCallback callback);
| 请求获取某设备的设备安全等级信息(异步接口)。
|
void FreeDeviceSecurityInfo(DeviceSecurityInfo *info);
| 释放设备安全等级信息。
|
int32_t GetDeviceSecurityLevelValue(const DeviceSecurityInfo *info, int32_t *level);
| 从设备安全等级信息中提取对应的设备安全等级。
|
2
| dataclassification
| int32_t DATASL_GetHighestSecLevel(DEVSLQueryParams *queryParams, uint32_t *levelInfo);
| 获取对应设备可支持的数据风险等级。
|
int32_t DATASL_GetHighestSecLevelAsync(DEVSLQueryParams *queryParams, HigestSecInfoCallback *callback);
| 异步获取对应设备可支持的数据风险等级。
|
int32_t DATASL_OnStart(void);
| 模块初始化。
|
void DATASL_OnStop(void);
| 模块去初始化。
|
2.16.3 程序访问控制管理
2.16.3.1 功能概述
KaihongOS提供基于TokenID的应用权限校验机制,应用访问敏感数据或者API时可以检查是否有对应的权限。
2.16.3.2 技术架构图
![]()
图2-43 TokenID应用权限技术架构图
2.16.3.3 功能/规格详述
表2-19 应用权限规格表
[size=10.5000pt]模块
| [size=10.5000pt]接口
| [size=10.5000pt]描述
|
abilityAccessCtrl
| createAtManager();
| 获取访问控制模块对象
|
verifyAccessToken(tokenID: number, permissionName: string): Promise
| 校验应用是否授予权限
|
grantUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number): Promise
grantUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number, callback: AsyncCallback): void
| 授予应用user grant权限
|
revokeUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number): Promise
revokeUserGrantedPermission(tokenID: number, permissionName: string, permissionFlag: number, callback: AsyncCallback): void
| 撤销应用user grant权限
|
2.16.4 数据安全
2.16.4.1 功能概述
HUKS(OpenHarmony Universal Keystore Service)提供了密钥管理、证书管理服务,当前在OpenHarmony上主要提供密钥管理服务。
![]()
图2-44 HUKS密钥管理流程图
支持算法包括:
加解密:AES、RSA、SM4
签名验签:ED25519、DSA、ECC、SM2、SM3
密钥协商:X25519、ECDH、DH
消息认证:HMAC-SHA256/384/512
数据摘要:SHA256/384/512
2.16.4.2 技术架构图
![]()
图2-45 HUKS架构图
2.16.4.3 功能/规格详述
表2-20 应用权限规格表
[size=10.5000pt]模块
| [size=10.5000pt]接口
| [size=10.5000pt]描述
|
HUKS
| getSdkVersion();
| 获取当前系统SDK版本。
|
generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
generateKey(keyAlias: string, options: HuksOptions) : Promise
| 生成密钥,使用Callback回调异步返回结果。
|
deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
deleteKey(keyAlias: string, options: HuksOptions) : Promise
| 删除密钥,使用Callback回调异步返回结果。
|
importKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
importKey(keyAlias: string, options: HuksOptions) : Promise
| 导入明文密钥,使用Callback方式回调异步返回结果 。
|
exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
exportKey(keyAlias: string, options: HuksOptions) : Promise
| 导出密钥,使用Callback方式回调异步返回的结果。
|
getKeyProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
getKeyProperties(keyAlias: string, options: HuksOptions) : Promise
| 获取密钥属性,使用Callback回调异步返回结果。
|
isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
isKeyExist(keyAlias: string, options: HuksOptions) : Promise
| 判断密钥是否存在,使用Callback回调异步返回结果。
|
init(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
init(keyAlias: string, options: HuksOptions) : Promise
| init操作密钥接口,使用Callback回调异步返回结果。huks.init、huks.update和huks.finish为三段式接口,需要一起使用。
|
update(handle: number, token?: Uint8Array, options: HuksOptions, callback: AsyncCallback) : void
update(handle: number, token?: Uint8Array, options: HuksOptions) : Promise
| update操作密钥接口,使用Callback回调异步返回结果。huks.init、huks.update和huks.finish为三段式接口,需要一起使用。
|
finish(handle: number, options: HuksOptions, callback: AsyncCallback) : void
finish(handle: number, options: HuksOptions) : Promise
| finish操作密钥接口,使用Callback回调异步返回结果。
|
abort(handle: number, options: HuksOptions, callback: AsyncCallback) : void
abort(handle: number, options: HuksOptions) : Promise
| abort操作密钥接口,使用Callback回调异步返回结果。
|
3 系统应用介绍
3.1 Launcher
3.1.1 应用概述
Launcher作为系统人机交互的首要入口,提供应用图标的显示、点击启动、卸载应用,并提供桌面布局设置以及最近任务管理等功能。
Launcher采用扩展的TS语言(ArkTS)开发,主要的结构如图3-1所示。
![]()
图3-1 Launcher技术架构图
区分不同产品、不同屏幕的各形态桌面,含有桌面窗口、个性化业务,组件的配置,以及个性化资源包。
抽象的公共特性组件集合,可以被各桌面形态引用。
基础能力集,每个桌面形态都必须依赖的模块。
3.1.2 基本界面介绍
![]()
图3-1 常用应用排布图
![]()
图3-2 应用快捷菜单图
![]()
图3-3 常用应用快捷菜单图
![]()
图3-4 相邻应用排布图
![]()
图3-5 非相邻应用排布图
![]()
图3-6 多常用应用排布图
![]()
图3-7 应用文件夹排布图
![]()
图3-8 应用文件夹管理图
![]()
图3-9 文件夹内应用快捷菜单图
![]()
图3-10 弹窗样式图
3.2 SystemUI
3.2.1 应用概述
SystemUI应用是预置的系统应用,为用户提供系统相关信息展示及交互界面,包括系统状态、系统提示等,例如系统时间、消息通知。SystemUI应用的主要功能如表3-1所示。
表2-1 SystemUI功能概述表
[size=10.5000pt]序号
| [size=10.5000pt]功能
| [size=10.5000pt]子功能
| [size=10.5000pt]功能描述
|
1
| 状态栏
| 时间显示
| 显示系统时间(12/24小时制)和星期
|
消息通知
| 显示发送通知的应用图标(最多5个)
|
Wi-Fi显示
| 显示Wi-Fi开关状态
|
移动数据显示
| 显示SIM卡的类型、信号和移动数据能力
|
2
| 导航栏
| Back键
| 返回上一页面或退出应用
|
Home键
| 返回桌面
|
Recent键
| 查看最近任务列表
|
导航栏隐藏键
| 隐藏/显示Back、Home、Recent键
|
3
| 消息中心
| License
| 显示系统当前授权信息
|
系统时间
| 显示系统当前时间(24小时制)
|
通知管理
| 在消息中心页面隐藏状态栏通知图标
在Launcher和app等页面,显示状态栏通知图标
设置单个应用的通知显示
|
消息通知列表
| 应用消息通知(单行/多行)
|
4
| 控制中心
| WLAN
| 开关WLAN
显示WLAN列表与选择切换
|
移动数据
| 开关移动数据
|
蓝牙
| 蓝牙开关
|
分布式屏幕
| [size=6.5000pt]l 开关分布式屏幕
[size=6.5000pt]l 显示可投屏设备列表[size=12.0000pt]
[size=6.5000pt]l 指定投屏设备[size=12.0000pt]
|
截屏
| 实现对当前屏幕截取
|
音量调节
| 实现系统媒体音量调节
|
亮度调节
| 实现屏幕亮度调节
|
说明:
熄屏后,如果设备有
电源键,可短按电源键亮屏。
3.2.2 功能/规格详述
3.2.2.1 状态栏
状态栏在屏幕顶部,显示内容如下:
显示系统时间(12小时制/24小时制)和星期天数。
![]()
图3-12 时间显示
显示发送通知的应用图标,最多显示5个应用通知图标,超过5个省略号显示。
![]()
图3-13 消息通知图标
Wi-Fi打开并连接时,显示Wi-Fi图标。
![]()
图3-14 Wi-Fi图标显示
展示SIM卡类型、SIM卡信号,以及SIM卡的移动数据能力。
![]()
图3-15 移动数据图标显示
3.2.2.2 导航栏
导航栏在屏幕底部,包含以下按键:
![]()
图3-16 导航栏
:Back键(返回键)
可以实现从当前页面返回到上一页面,桌面上点击返回键页面不变。
:Home键
Home键可以实现从应用页面回到系统主页。
:Recent键
点击Recent键,可以查看系统最近任务列表(不包含原子化服务和桌面无图标的应用)。
![]()
图3-17导航栏按键
:隐藏键
点击隐藏键,可以将Back、Home、Recent隐藏。
![]()
图3-18 导航栏隐藏
3.2.2.3 消息中心
在左侧屏幕,单指从顶部往下滑,拉出消息中心界面。
显示系统的授权信息。
![]()
图3-19 License授权消息
设备需要先进行License授权后才可正常使用,未获得授权的设备会在系统消息通知中提示设备未授权,且在设备试用(持续开机运行)1小时后会自动重启,每试用1小时自动重启一次。
显示当前系统时间。
![]()
图3-20 系统时间
点击通知管理,可以跳转到设置的通知页面。
![]()
图3-21 通知管理
展示应用的通知,包括单行通知、多行通知等。
当前版本消息通知条数限制在20条以内,每个应用通知数量不超过5条。
![]()
图3-22 消息通知列表
3.2.2.4 控制中心
在右侧屏幕,单指从顶部往下滑,拉出控制中心界面。
点击WLAN图标,同步开启设置的WLAN开关。点击已连接的Wi-Fi名称或者后面的
![]()
,展示可用的Wi-Fi列表。
![]()
图3-23 WLAN开关
插入SIM卡后,点击移动数据图标,同步打开移动数据开关。
![]()
图3-24 移动数据
点击蓝牙图标,同步打开蓝牙开关。
![]()
图3-25 蓝牙开关
点击分布式屏幕图标,同步打开分布式屏幕开关,系统弹窗展示已经建立连接的、可用的超级设备列表。
![]()
图3-26 分布式屏幕
点击截屏图标,实现对当前屏幕的截取。
![]()
图3-27 截屏开关
![]()
图3-28 截屏效果样例
手动滑动、点击音量调节条,实现系统媒体音量的调节。
![]()
图3-29 音量调节
手动滑动、点击亮度调节条,实现系统屏幕亮度的调节。
![]()
图3-30 亮度调节
3.3 输入法
3.3.1 应用概述
输入法的功能说明如表3-2所示。
表3-2 输入法功能概述表
[tr]功能子功能功能描述[/tr]
| 输入法 | 英文输入 | 可以输入英文字符,含大小写切换 |
| 中文输入 | 点击字母,可以显示对应的中文 | |
| 数字输入 | 可以输入数字0-9 | |
| 符号输入 | 可以输入中英文符号 | |
说明:
隐藏输入法时,原来的输入按键区域会偶尔闪现桌面。
3.3.2 功能/规格详述
3.3.2.1 英文输入
点击输入框将弹出英文输入法,点击大小写切换按钮可切换大小写英文输入。点击符号、数字或中英文切换按钮,可以切换到符号输入、数字输入或中文方式,点击右上角箭头可隐藏输入法。
![]()
图3-31 英文输入
3.3.2.2 中文输入
切换中文输入后,点击字母,在上方会显示对应的中文。
![]()
图3-32 中文输入
3.3.2.3 数字输入
切换数字输入后,可输入数字0~9和其他常用英文符号。点击左下角“更多”,切换到符号输入,或点击“返回”退回英文输入界面。
![]()
图3-33 数字输入
3.3.2.4 符号输入
从英文输入界面切换到符号输入后,可输入英文符号。从中文输入界面切换到符号输入后,可输入中文符号。
点击左下角“123”可以切换到数字输入,或点击“返回”退回英文输入界面。
![]()
图3-34 符号输入
3.4 SettingsData
SettingsData是预置的系统应用,为用户提供数据库的访问存取服务,例如存储/读取系统时间格式、屏幕亮度等系统属性。
3.5 设置
3.5.1 应用概述
设置应用是预置的系统应用,为用户提供设置系统属性的交互界面。设置的功能说明如表3-3所示。
表3-3 设置功能概述表
[size=10.5000pt]序号
| [size=10.5000pt]功能
| [size=10.5000pt]子功能
| [size=10.5000pt]功能描述
|
1
| WLAN
| WLAN列表
| 显示附近的WLAN列表。
|
WLAN连接
| 选择WLAN连接。
|
手动添加网络
| 手动输入网络名称与密码,可配置安全性和IP设置。
|
网络详情
| 查看WLAN网络详情信息。
|
2
| 蓝牙
| 蓝牙开关
| 开关蓝牙。
|
3
| 移动数据
| 移动数据
| 开关移动数据。
|
网络类型切换
| 可切换自动(默认)、4G网络、3G网络、2G网络。
|
接入点名称(APN)
| 可选择CMNET或CMWAP,或者新建接入点名称。
|
4
| 以太网
| 自动获取IP
| 自动获取IP地址。
|
设置IP地址
| 手动设置IP地址、子网掩码、默认网关、首选DNS和备选DNS等相关信息。
|
5
| 连接与共享
| 个人热点
| 包含热点开关、设置热点名称、热点管理(名称、安全性、密码的设置)、显示已连接设备数量等功能。
|
NFC
| 开关NFC功能。
|
6
| 声音与振动
| 设置媒体音量
| 设置媒体音的大小。
|
7
| 通知
| 状态栏显示通知图标
| 状态栏显示/隐藏通知图标。
|
应用通知开关的管理
| 显示应用列表,选择后可对单个应用设置是否状态栏显示其通知图标。
|
8
| 显示与亮度
| 亮度调节
| 设置屏幕显示亮度。
|
9
| 锁屏
| 自动锁屏
| 设置自动锁屏时间,默认锁屏时间为5分钟。
|
10
| 应用
| 应用管理列表
| 显示当前可管理应用列表。
|
应用存储
| 显示应用的存储数据信息。
|
应用权限管理
| 管理应用的存储权限。
|
11
| 关于本机
| 显示本机信息
| 显示信息包括:设备名称(可修改)、产品类型、系统版本、OpenHarmony版本、SN显示、授权状态、IMEI、CPU信息(CPU型号、CPU主频、CPU使用率),屏幕信息(分辨率、屏幕比例)、内存容量、存储容量内核版本。
|
12
| 系统设置
| 时间和日期
| 12/24小时制的设置,自动设置时间或者手动设置时间(手动可以对时区、日期、时间进行设置)。
|
开发者选项
| USB调试与USB虚拟串口开关。
|
说明:
当前版本暂不支持位置信息、相机、麦克风、媒体和文件、日历、健身运动、身体传感器、超级设备、开鸿通信、其他权限。
3.5.2 功能/规格详述
3.5.2.1 首页
![]()
图3-35 设置首页(1)
![]()
图3-36 设置首页(2)
3.5.2.2 WLAN
功能包括:WLAN开关,显示当前已连接设备,WLAN网络列表(点击可连接该网络),以及手动添加网络。其中:
- WLAN列表中,显示可用WLAN数目无限制。
- 手动添加网络时,提供WPA/WPA2的安全选项,及显示已连接网络的详情。
![]()
图3-37 WLAN页面
![]()
图3-38 手动添加网络
3.5.2.3 蓝牙
功能包括:蓝牙开关。
3.5.2.4 移动数据
功能包括:移动数据开关,网络类型设置,接入点名称(APN)设置。
![]()
图3-39 移动网络
移动网络类型包括自动、4G网络、3G网络和2G网络。
![]()
图3-40 网络类型
接入点名称(APN)默认可选项包括:CMNET和CMWAP。也支持点击“新建”,创建新的接入点。
![]()
图3-41 接入点名称(APN)
![]()
图3-42 新建APN
3.5.2.5 以太网
以太网可对Eth0和Eth1两个端口进行设置,选择设置IP地址,将可手动填写IP地址、子网掩码、默认网关、首选DNS和备选DNS,点击右上角“保存”后生效。
![]()
图3-43 以太网
3.5.2.6 连接与共享
包含功能:个人热点和NFC开关。
![]()
图3-44 连接与共享
![]()
图3-45 个人热点
个人热点包含开关、设置热点名称、热点管理(名称、安全性、密码的设置)、显示已连接设备数量等功能。
热点WLAN连接的最大数量与硬件相关,OS无限制。
NFC包含开关能力,当NFC开关打开时,支持读取NFC标签信息。
说明:
基于本版本适配的
开发板为KHDVK-3568A,热点WLAN连接的最大数量不低于10个。
受限于KHDVK-3568A验证设备,NFC功能与MIPI摄像头共用同一个接口,因此无法在同一时刻同时使用。
3.5.2.7 声音与振动
当前可拖动调节媒体音的音量大小。
![]()
图3-46 媒体音量设置
3.5.2.8 通知
开关状态栏显示通知图标(控制全体应用在状态栏的图标显示/隐藏),以及应用列表(点击后可控制单个应用是否显示通知图标)。
![]()
图3-47 通知设置
单个应用的状态栏显示通知图标设置:
![]()
图3-48 单应用显示通知图标设置
3.5.2.9 显示与亮度
手动拖动或点击进度条,调整屏幕亮度。
![]()
图3-49 亮度调节
3.5.2.10 锁屏
设置自动锁屏时间,默认锁屏时间为5分钟。
![]()
图3-50 设置锁屏时间
![]()
图3-51 锁屏时间选择
3.5.2.11 应用
显示应用列表,点击后可查看应用的版本、存储情况,可强行停止或者卸载该应用。
![]()
图3-52 应用管理
应用详情信息界面如下:
![]()
图3-53 应用详情
“存储”界面显示应用存储数据信息,可查看该应用的缓存数据大小,并可以清空其缓存。
![]()
图3-54 应用存储
3.5.2.12 关于本机
显示信息包括:设备名称(可修改)、产品类型、系统版本、OpenHarmony版本、SN显示、授权状态、IMEI、CPU信息(CPU型号、CPU主频、CPU使用率)、屏幕信息(分辨率和屏幕比例)、内存容量、存储容量、内核版本。
![]()
图3-55 关于本机(1)
![]()
图3-56 关于本机(2)
3.5.2.13 系统设置
功能包括:日期和时间、开发者选项。
![]()
图3-57 系统设置
说明:
当前版本不支持pull升级,点击“软件更新”,提示“目前不支持PULL方式升级,敬请期待”。
24小时制开关可切换时间显示模式(12/24小时制),自动设置时间将自动获取网络时间,取消则可手动设置。
![]()
图3-58 日期和时间
当前有2项开关,分别开启后才能使用USB调试和USB虚拟串口。
![]()
图3-59 开发者选项
3.6 星系组网
3.6.1 应用概述
星型组网时,L2设备之间的组网关系是无中心状态,两两互通。L2与L0设备之间是一种中心式的网络结构,其中L2设备为中心节点。
KaihongOS的星系组网功能如表3-4所示。
表3-4 星系组网功能概述
[tr]序号功能功能描述[/tr]
| 1 | 设备发现 | 搜索发现周边的设备。 |
| 2 | 配网组网 | 可以点击外圈设备进行配网组网。 |
| 3 | 设备详情 | 点击组网设备,显示设备详情弹窗。 |
| 4 | 原子化服务 | 显示对端设备的原子化服务,并支持下载、打开。 |
| 5 | 分布式屏幕 | 屏幕共享,包括:本屏投出和远屏拉入。 |
| 6 | 解除组网 | 在设备详情页面,点击“断开连接”,即可解除组网。 |
注意:
当前版本的星系组网兼容1.3.4及更高版本,不兼容低于1.3.4的版本。
当前版本的星系组网不支持与低于4.1.2版本的L0设备组网。
3.6.2 功能/规格详述
星系组网在桌面没有图标,但可以在桌面通过单指下滑的方式拉起星系组网界面。
3.6.2.1 设备发现
进入星系组网界面后,系统自动搜索发现周围设备,显示如图3-60所示。
![]()
图3-60 星系组网首页
待发现设备需满足以下条件之一才能被发现:
- 蓝牙打开
- 连接Wi-Fi,与发现设备处于同一网络内
- 连接以太网,与发现设备处于同一网络内
3.6.2.2 配网组网
打开星系组网,点击发现的设备,当前设备自动将配网信息发送给对端设备,进行配网组网,同时显示配网组网的进度。组网成功后,当前设备自动获取对端设备的原子化服务列表。
如图3-61所示,当设备图标处于内圈,且并非处于进度状态时,表示组网成功。(后文将组网成功的设备简称为“组网设备”。)
![]()
图3-61 组网成功
3.6.2.3 设备详情
点击组网设备,显示设备详情弹窗,如图3-62所示。包括当前设备名称、SN号、原子化服务、最近打开的原子化服务、分布式屏幕。
![]()
图3-62 设备详情
3.6.2.4 原子化服务
点击组网设备,打开设备详情弹窗(如图3-62),点击“原子化服务”,进入原子化服务二级页面,显示此组网设备的原子化服务列表。
点击原子化服务二级页面中的原子化服务,即可打开此原子化服务。
最近打开的原子化服务将显示在“原子化服务”下面,点击可直接打开此原子化服务。
3.6.2.5 分布式屏幕
点击设备详情弹窗的“本屏投出”,将本设备的屏幕共享给对端设备。再次点击“本屏投出”,则屏幕共享结束。
![]()
图3-63 本屏投出
点击设备详情弹窗的“远屏拉入”,将对端设备的屏幕共享给本端设备。再次点击“远屏拉入”,则屏幕共享结束。
3.6.2.6 解除组网
点击组网设备,打开设备详情弹窗(如图3-62),点击“断开连接”,即可解除组网。
3.6.2.7 性能要求
长稳要求:48小时内,网络连接正常的情况下,组网断开不超过3次,每次组网断开都能自动回连。
3.7 应用市场
3.7.1 应用概述
应用市场是提供给用户管理原子化服务、应用和组件的平台,主要功能说明如表3-5所示。
表3-5 应用市场功能概述表
[size=10.5000pt]序号
| [size=10.5000pt]功能
| [size=10.5000pt]子功能
| [size=10.5000pt]功能描述
|
1
| 原子化服务
| 发现
| 显示云端的服务卡片,点击卡片打开原子化服务。
|
附近
| 显示可信设备的服务卡片,点击卡片打开原子化服务。
|
我的服务
| 显示最近打开的服务卡片,提供收藏、添加到桌面、分发到可信设备、移除的功能。
|
2
| 应用
| 发现
| 显示云端的应用,支持安装、更新和查看应用详情。
|
我的应用
| l 已安装:显示本地已安装的应用,提供卸载的功能。
l 正在下载:显示正在下载的应用,提供删除任务的功能。
|
3
| 组件
| 我的组件
| l 已安装:显示本地已安装的组件,提供版本回退功能。
l 正在下载:显示正在更新的组件,提供删除任务的功能。
|
4
| 搜索
| 搜索
| 输入关键字搜索本地和云端的原子化服务、应用和组件。
|
搜索历史
| 显示搜索历史记录。
|
扫一扫
| 扫描二维码拉起服务卡片。
|
5
| 设置
| 登录
| 登录或退出账号。
|
安装与更新
| 修改自动更新应用的设置。
|
注意:
该版本的应用市场兼容4.1.2及更高版本,不兼容低于4.1.2的版本(分发到其他设备、附近页面拉取/流转原子化服务等场景下存在兼容性问题)。
3.7.2 功能/规格详述
3.7.2.1 原子化服务
原子化服务是 OpenHarmony提供的一种面向未来的服务提供方式,是有独立入口的(用户可通过点击、扫一扫等方式直接触发)、免安装的(无需显式安装,由系统程序框架后台安装后即可使用)、可为用户提供一个或多个便捷服务的用户程序形态,供用户在合适的场景、合适的设备上便捷使用。
发现
点击“发现”,如果设备未登录超级设备管理平台,则显示登录提示信息;当有网络且账号已登录时,则显示云端已分发到该产品的原子化服务卡片列表。
![]()
图3-64 发现页面
附近
显示通过软总线连接的可信设备的原子化服务,点击服务卡片可从相应设备拉取原子化服务到本地并拉起。
![]()
图3-65 附近页面(连接可信设备)
我的服务
显示使用最多的十张服务卡片,按照服务打开时间由近及远排序。
使用服务卡片有多种入口:
− 从“发现”中点击卡片
− 从“我的服务 > 常用服务”或“我的服务 > 收藏服务”中点击卡片
− 从“附近”中点击卡片
− 从其他设备分发到本设备
− 从其他设备流转到本设备
− 从其他入口(桌面卡片、扫一扫)拉起使用原子化服务
点击服务卡片右上角的收藏按钮,可以将卡片添加到收藏服务。
点击服务卡片下方的更多按钮
![]()
,可以对服务卡片执行以下操作:
− 添加到桌面
− 分发到其他设备
− 移除
![]()
图3-66 常用服务页面
显示已添加到收藏的服务卡片,点击右上角的收藏按钮,可取消收藏。无收藏时,显示“在[常用服务]选择服务添加收藏”。
![]()
图3-67 收藏服务页面
3.7.2.2 应用
应用,指的是运行在OpenHarmony上的、传统方式的、需要安装的应用。
发现
点击“发现”,如果设备未登录超级设备管理平台,则显示登录提示信息;在有网络且账号已登录时,显示云端已分发到该产品的应用列表。
![]()
图3-68 发现页面
我的应用
支持查看本地已安装的应用,支持应用的打开和更新。对于非系统应用,还支持卸载。
![]()
图3-69 已安装页面
展示正在下载的应用。
− 点击下载按钮
![]()
,支持暂停/启动下载任务。
− 点击更多按钮
![]()
,选择“删除”可删除下载任务。
![]()
图3-70 正在下载页面
应用详情页
点击应用图标,展示应用的详细信息。
![]()
图3-71 应用详情页
3.7.2.3 组件
组件是指SDK Public API层以下的系统服务或库,而非传统应用包,可以独立打包、独立升级,独立于OTA版本进行发布和演进。
我的组件
支持查看本地已安装的组件,支持组件更新和回退到初始版本的功能。
![]()
图3-72 已安装页面
支持查看组件受控情况。卡片置灰,表示组件受控,不支持更新和回退,也不支持使用此组件能力。
![]()
图3-73 受控组件
展示正在下载的组件。
− 点击下载按钮
![]()
,支持暂停/启动下载任务。
− 点击更多按钮
![]()
,选择“删除”可删除下载任务。
![]()
图3-74 正在下载页面
组件详情页
点击组件图标,展示组件的详细信息。
![]()
图3-75 组件详情页
3.7.2.4 搜索
点击搜索栏或“搜索”按钮进入搜索页面,输入关键字即可搜索本地及云端的原子化服务卡片、应用及组件。
![]()
图3-76 搜索结果展示
已经搜索过的关键字将展示在“搜索历史”中,点击关键字可再次进行搜索。
![]()
图3-77 搜索历史
点击搜索栏扫码按钮可拉起扫一扫,扫描二维码可拉起原子化服务。
满足以下条件才能通过扫一扫拉起原子化服务:
− 原子化服务已经被上传到超级设备管理平台或为本地原子化服务。
− 原子化服务的二维码由开发者自己生成,且二维码内容字符串需符合以下格式:
application,应用包名,EntryAbility
示例:application,com.kaihong.antiinterference.hmservice,EntryAbility
![]()
图3-78 扫一扫界面
3.7.2.5 设置
登录
提供超级设备管理平台的账号登录和退出功能,登录后可保持登录状态7天。登录后可访问云端,获取到云端分发的原子化服务和应用。
![]()
图3-79 已登录账号
安装与更新
对于应用,支持自动更新设置。点击“自动更新应用”的设置值,弹出“自动更新应用”对话框,可选择关闭自动更新,在WLAN、以太网下自动更新应用,或者WLAN、以太网、移动网络下自动更新应用。
![]()
图3-80 自动更新应用弹窗
4 典型特性介绍
4.1 原子化服务
4.1.1 特性介绍
在OpenHarmony上运行的应用,除了传统方式的需要安装的应用外,还有一种提供特定功能、免安装的应用,即原子化服务。
原子化服务是 OpenHarmony提供的一种面向未来的服务提供方式,是有独立入口的(用户可通过点击、扫一扫等方式直接触发)、免安装的(无需显式安装,由系统程序框架后台安装后即可使用)、可为用户提供一个或多个便捷服务的用户程序形态,供用户在合适的场景、合适的设备上便捷使用。
4.1.2 服务流转
随着全场景多设备的生活方式不断深入,用户拥有的设备越来越多,不同设备都能在适合的场景下提供良好的体验,例如手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备也有使用场景的局限,例如在电视上输入文本相对移动设备来说是非常糟糕的体验。当多个设备通过分布式操作系统能够相互感知、进而整合成一个超级终端时,设备与设备之间就可以取长补短、相互帮助,为用户提供更加自然流畅的分布式体验。
在多设备场景下,原子化服务支持在多设备之间流转的能力,称为“服务流转”。KaihongOS的服务流转的功能说明如表4-1所示。
表4-1 服务流转功能概述表
[tr]序号功能功能描述[/tr]
| 1 | 流转本服务 | 开发者在原子化服务界面中嵌入流转图标,当服务启动后,点击该图标,弹出服务流转面板,在面板上选择流转的目标设备,将该服务流转到指定设备。 |
| 2 | 统一入口流转指定服务 | 在桌面三指下滑,弹出流转面板,在面板上选择需要流转的服务,再选择流转的目标设备,将指定服务流转到指定设备。 |
4.1.2.1 流转本服务
- 点击“应用市场 > 原子化服务”,选择对应的原子化服务,进入原子化服务界面。
如果对应的原子化服务已添加到桌面,可以直接从桌面点击服务卡片,进入原子化服务界面。
![]()
图4-1 流转按钮
![]()
图4-2 选择流转设备
4.1.2.2 统一入口流转指定服务
注意:
采用此方式进行服务流转之前,需要先启动原子化服务,且后台不能退出。
启动多个原子化服务时,启动一个后,按Home键再启动另一个原子化服务,这样原子化服务在后台不会退出。(注意不要按返回键,按返回键会导致原子化服务在后台退出。)
该版本的服务流转特性兼容4.1.2及更高版本,不兼容低于4.1.2的版本。
- 在桌面使用三指下滑。
- 在弹出的面板选择需要流转的原子化服务。
![]()
图4-3 选择流转服务
![]()
图4-4 选择流转设备
4.2 docker服务
4.2.1 特性介绍
Docker容器利用Linux的cgroup和namespace功能,通过将应用程序及其依赖项打包成镜像,创建一个隔离的运行时环境,实现了容器的隔离和资源管理。这种轻量级的虚拟化技术使得容器可以快速启动、停止和迁移,提供了更高效、可靠和可扩展的应用部署方式。
4.2.2 技术架构图
![]()
图4-5 Docker DFR技术架构图
4.2.3 功能/规格详述
- docker client:Docker客户端通过命令行或者其他工具使用Docker SDK与Docker的守护进程通信。
- dockerd:docker-daemon,用于管理容器的守护进程叫dockerd。docker是可以分为服务端和客户端的,即有host和client。dockerd可以理解为docker的引擎,来直接控制docker的daemon行为。
- containerd:containerd是一个用于管理容器的核心守护进程,它负责容器的创建、删除、运行和暂停等操作。
- shim: containerd-shim是一个在容器和容器运行时之间的代理(如runc),用于处理容器进程的生命周期和通信。shim与containerd与容器运行时进行通信,协助在容器启动和停止等过程中进行必要的管理。
- runc:runc主要在docker engine上实现了对runc的调用,通过docker的containerd来对runc api相关的调用操作。runc主要是containerd底层的实现逻辑。
docker服务主要通过shell指令实现对应的虚拟化部署功能,常用的shell指令如表4-2所示。
表4-2 shell指令集合表
[tr]shell指令功能说明[/tr]
| docker pull | 拉取镜像 |
| docker ps | 查看运行中的容器 |
| docker version | 查看版本 |
| docker ps -a | 查看所有容器 |
| docker rm | 删除容器 |
| docker rmi | 删除镜像 |
| docker stop | 停止容器 |
| docker run | 运行容器 |
| docker exec | 进入容器 |
| docker network ls | 列出网络 |
5 支持的驱动能力
支持的驱动能力包括:
网口、蓝牙、Wi-Fi、4G模块、SIM卡、NFC、麦克风、喇叭、Camera、USB 2.0 host、OTG、UART、CAN、LCD、HDMI OUT等
A 术语
[tr]A[/tr]
| Ability | Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。Ability是系统调度应用的最小单元,是能够完成一个独立功能的组件。一个应用可以包含一个或多个Ability。 |
| Ability Life Cycle | Ability的生命周期。生命周期状态主要包括以下几种:- UNINITIALIZED:未初始状态。- INITIA:初始化状态,但未运行。- INACTIVE:失去焦点状态。- ACTIVE:前台激活状态。- BACKGROUND:后台状态。 |
| Accesstoken | 访问令牌,代表执行某些操作的权利的对象。应用的Accesstoken信息主要包括应用身份标识APPID、用户ID,应用分身索引、应用APL(Ability Privilege Level)等级、应用权限信息等。每个应用的Accesstoken信息由一个32bits的设备内唯一标识符TokenID(Token identity)来标识。 |
| AES | Advanced Encryption Standard,高级加密标准,为最常见的对称加密算法,也就是加密和解密用相同的密钥对数据进行处理。 |
| AMS | Ability Manager Service,Ability管理服务。 |
| API | native开发接口。 |
| APN | Access Point Name,接入点,指一种网络接入技术,是通过手机上网时必须配置的一个参数,它决定了手机通过哪种接入方式来访问网络。 |
| Application | 基于项目业务逻辑开发的应用程序,简称App。 |
| ArkTS | 应用开发语言,在TypeScript(简称TS)的基础上,扩展了声明式UI、状态管理等能力,让开发者可以以更简洁、更自然的方式开发应用。 |
| ArkUI | 方舟开发框架,是一套极简、高性能、跨设备应用设计研发的UI开发框架,支撑开发者高效地构建跨设备应用UI界面。 |
| Atomic Service | 原子化服务,具有独立入口,用户可通过点击、扫一扫等方式直接触发,无需显示安装,由系统静默安装后即可使用,为用户提供便捷服务。 |
| B | |
| Bundle | 包,应用程序安装包的最小载体。一个Application可以包含一或多个Bundle。 |
| C | |
| CMNET | CMNET(China Mobile Network)是中国移动互联网的简写,是中国移动独立建设的全国性的、以宽带互联网技术为核心的电信数据基础网络。CMNET同时也是中国移动GPRS网络的两大接入点(APN)之一,通过CMNET接入点可以接入中国移动CMNET网络,获得完全的Internet访问权。 |
| CMWAP | CMWAP(China Mobile Wireless Access Point,中国移动梦网)是手机上网使用的接入点的名称。CMWAP使用HTTP代理协议和WAP网关协议可以访问到Internet。通过CMWAP只能访问WAP网站。 |
| Component | 应用组件,每个Ability就是一个应用级组件。 |
| CSS | Cascading Style Sheets,层叠样式表,是一种用来表现HTML等文件样式的计算机语言。针对HTML文件中的各种标签组件的样式进行设置。 |
| D | |
| Data Ability | Ability的一种,但是没有UI,提供其他Ability进行数据的增删查服务,在后台运行。 |
| DFR | Design for Reliability,可靠性设计。 |
| Display | 描述display对象的属性。 |
| 定时器 | 定时器是一个计划任务服务,用于定时触发指定的动作(方法)。 |
| 多模输入 | 多模输入子系统是应用于标准系统之上,为设备提供触控、键盘、鼠标等输入能力。 |
| E | |
| ED25519 | 是一种EdDSA算法。 |
| EdDSA | Edwards-curve Digital Signature Algorithm,爱德华兹曲线数字签名算法,是一种数字签名方案,它使用基于扭曲爱德华兹曲线的Schnorr签名变体。 |
| F | |
| FA | Feature Ability,元服务,代表有界面的Ability,用于与用户进行交互。 |
| FA模型 | 两种Ability框架模型结构的其中一种。是Ability框架在API 8及更早版本采用FA模型。FA模型将Ability分为FA(Feature Ability)和PA(Particle Ability)两种类型,其中FA支持Page Ability模板,PA支持Service Ability、Data Ability、以及Form Ability模板。 |
| Form Ability | 卡片Ability,是一种界面展示形式。 |
| FormExtension | Stage模型的卡片的生命周期管理方。 |
| 分布式屏幕 | 分布式屏幕是一种屏幕虚拟化能力,提供跨设备的屏幕能力调用。 |
| 分布式软总线 | 分布式软总线是多设备的统一基座,为设备间的无缝互联提供了统一的分布式通信能力,能够快速发现并连接设备,高效地传输任务和数据。 |
| 分布式相机 | 分布式相机,是指多个设备的相机同时协同使用的能力。 |
| 蜂窝数据 | 即从数据的传输到交换都采用分组技术,用户端配置无线分组调制解调器,通过专门的分组基站进入分组网,可以访问分组网上的主机、数据库,也可以呼叫另一个移动数据终端。这种技术主要为专门的移动数据通信系统所采用,只能为移动数据用户提供到分组交换数据网用户的连接。 |
| G | |
| GCM | Galois/Counter Mode,伽罗瓦/计数器模式,是认证加密模式中的一种。 |
| H | |
| HAP | 应用开发生成的程序安装包,类似Android中的APK。不同的是,Android项目同一个包名只能生成一个APK文件。而harmony中Application可以包含多个Bundle,HAP是基于Bundle生成的安装包,所以一个项目可以有多个HAP文件。一个HAP文件包含应用的所有内容,由代码、资源、三方库及应用配置文件组成,其文件后缀名为.hap。 |
| HMAC | Hash-based Message Authentication Code,密钥相关的哈希运算消息认证码,由H.Krawezyk、M.Bellare、R.Canetti于1996年提出的一种基于Hash函数和密钥进行消息认证的方法。 |
| HTML | HyperText Mark-up Language,超文本标记语言,是一种标记语言。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。这些命令通过专用的浏览器来识别,并将这些HTML文件“翻译”成可以识别的信息,即网页。 |
| HUKS | OpenHarmony Universal KeyStore,OpenHarmony通用密钥库系统。向应用提供密钥库能力,包括密钥管理及密钥的密码学操作等功能。 |
| 混合部署 | MCS, Mixed Criticality System,一个片上系统中(SoC)部署多个OS。 |
| I | |
| Install | 安装。HAP包下载到设备后没法直接使用,需要通过安装对HAP包进行解压、解析等处理,然后系统才能将应用转化为可执行的进程。对同一个项目的多个HAP进行安装后,会整合为一个应用。 |
| J | |
| JS | JS(JavaScript)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。作为开发Web页面的脚本语言而出名。 |
| L | |
| 蓝牙 | 蓝牙是一种短距无线通信技术,能够以较低成本在不同设备之间建立通信连接。 |
| M | |
| Module | 同一个项目的多个Bundle之间通过module字段进行区分。 |
| N | |
| NFC | Near Field Communication(NFC),近场通信,是一种新兴的技术,使用了NFC技术的设备(例如移动电话)可以在彼此靠近的情况下进行数据交换,是由非接触式射频识别(RFID)及互连互通技术整合演变而来的,通过在单一芯片上集成感应式读卡器、感应式卡片和点对点通信的功能,利用移动终端实现移动支付、电子票务、门禁、移动身份识别、防伪等应用。 |
| NTP | Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议。目的是在无序的Internet环境中提供精确和健壮的时间服务。 |
| O | |
| OTA | Over-the-Air Technology,空中下载技术,通过网络自动下载升级包、自动升级,提供对设备远程升级的能力。 |
| P | |
| PA | Particle Ability,是在FA模型的Ability框架下无界面的Ability,主要为Feature Ability提供服务与支持,例如作为后台服务提供计算能力,或作为数据仓库提供数据访问能力。Particle Ability有三种模板,分别为Service模板(Service Ability)、Data模板(Data Ability)、以及Form模板(Form Ability)。 |
| Page Ability | 具备ArkUI实现的Ability,是用户具体可见并可以交互的Ability实例。 |
| PixelMap | 图像解码后无压缩的位图格式。 |
| R | |
| RDB | Relational Database,关系型数据库,是一种基于关系模型来管理数据的数据库。 |
| RFID | Radio Frequency Identification(RFID),射频识别,是自动识别技术的一种,通过无线射频方式进行非接触双向数据通信,利用无线射频方式对记录媒体(电子标签或射频卡)进行读写,从而达到识别目标和数据交换的目的。 |
| 软总线发现 | 通过软总线的通信方式屏蔽了不同设备之间的差异,可以发现周围KaihongOS设备。 |
| 软总线组网 | 通过软总线的通信方式将不同设备连接起来,设备之间可以实现通信。 |
| S | |
| Service Ability | Ability的一种,但是没有UI,提供其他Ability调用自定义的服务,在后台运行。 |
| ServiceExtensionAbility | Stage模型中新增的Ability类型,一般用于处理无界面的任务,生命周期较为简单。开发者可以自定义类继承ServiceExtensionAbility,通过重写基类中相关生命周期方法,来做初始化、连接中、断开连接时相关业务逻辑操作。 |
| SHA | Secure Hash Algorithm,安全散列算法,是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。若输入的消息不同,它们对应到不同字符串的机率很高。 |
| SIM卡 | SIM(Subscriber Identity Module)卡是GSM系统的移动用户所持有的IC卡,称为用户识别卡。GSM系统通过SIM卡来识别GSM用户。同一张SIM卡可在不同的手机上使用。GSM手机只有插入SIM卡后,才能入网使用。 |
| Stage模型 | Ability开发的另外一种框架模型。Ability框架在API 9可使用Stage模型。 |
| T | |
| TS | TS(TypeScript)是开源和跨平台的编程语言,为大型应用的开发而设计,并且可以编译为JavaScript。它是JavaScript的超集,扩展了JavaScript的语法。 |
| TTS | Text To Speech,即“从文本到语音”。 |
| U | |
| UI | User Interface,用户界面,是指对软件的人机交互、操作逻辑、界面美观的整体设计。 |
| UI组件 | UI组件是指窗体上放置的可视化图形控件,比如按钮、文件编辑框等。 |
| Uninstall | 卸载。对安装后的应用进行卸载,会删除应用相关的所有资源文件。 |
| W | |
| Wi-Fi | Wi-Fi是Wi-Fi联盟制造商的商标作为产品的品牌认证,是一个创建于IEEE 802.11标准的无线局域网技术。 |
| Window | 当前窗口实例,窗口管理器管理的基本单元。 |
| 无感配网 | 借助蓝牙BLE、NFC等方式,对设备进行网络配置,使设备自动连接到网络,实现设备无感自动配网。 |
| 无感组网 | 通过预置或者其他方式,下发安全认证信息到设备中。持有相同安全认证信息的设备,在设备互相发现时,会自动启动设备互信认证。 |
| X | |
| X25519 | Curve25519的别称,是进行蒙哥马利曲线(Montgomery Curve)迪菲赫尔曼秘钥交换的椭圆曲线算法。 |
| 星系组网 | 星型组网是一种中心式的网络结构,其中有一个中心节点,其他所有设备都直接连接到这个中心节点上。 |
| 系统组件 | 即系统的SystemAbility,由系统能力管理框架(sa_main)拉起和管理。 |
| Y | |
| 音视频流转 | 音视频流转,基于同一软总线网络,将本设备的音频、视频通过软总线共享至其它设备进行播放的能力,高效地实现音频、视频的共享、传输、播放。 |
| 音频录制 | 捕获音频信号,完成音频编码并保存到文件中。 |
| 音频渲染 | 渲染音频文件和控制播放。 |
| 用户首选项 | 通常用于保存应用的配置信息。将内存中的数据通过文件的形式保存到设备上,为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。 |
| 原子化服务 | 原子化服务,是OpenHarmony提供的一种面向未来的服务提供方式,是有独立入口的(用户可通过点击的方式直接触发)、免安装的(无需显式安装,由系统程序框架后台安装即可使用),可为用户提供一个或多个便捷服务的用户应用程序形态。 |