OpenHarmony 系统设计和关键架构
如果无法正常显示,请先停止浏览器的去广告插件。
1. OpenHarmony系统设
计和关键架构
华为终端BG软件部 / 刘勋
2. 自我介绍
OpenHarmony部件化架构师;负责可大可小、弹性部署部件化架构设
•
计
•
OpenHarmony社区兼容性工作组核心成员;负责兼容性技术规范和兼
容性测评体系设计
•
OpenHarmony首席测试架构师;负责面向南北向开发者的测试工具设
计
3. 目录
• OpenHarmony设计理念
• OpenHarmony关键架构
• OpenHarmony社区进展
4. OpenHarmony是面向智能互联时代的OS
OS/360(1964)
UNIX(1969)
BSD(1977)
1945
真空管和穿孔卡片
1960s
晶体管
MS-DOS(1982)
QNX(1982)
VxWorks(1982)
MAC OS X(1984)
Windows(1985)
OS/2(1987)
1970s
iOS(2007)
Android(2008)
WebOS(2009)
Windows Phone(2010)
Tizen(2012)
SailfishOS(2013)
BeOS(1991)
Linux(1991)
Symbian(1994)
Palm OS(1996)
1990s
2007
大型机
OpenHarmony
2015
2035
云主机
个人计算机
移动设备
IOT设备
穿孔卡片
主机
(数万用户)
PC&嵌入式
(10亿用户)
PC互联网
(30亿用户)
移动互联网
(40亿用户)
智能互联
(160+ 亿连接)
5. OpenHarmony的基本设计理念
◆ 应用生态割裂问题
OpenHarmony设计理念
• 设备A的应用,在设备B上根本安装不了
• 设备B即使安装了,但是还需要重新注册,启动,输入,搜索…
◆ 用户数据割裂问题
• 从设备A访问设备B的照片/文件/…
• 如果有设备A,B,C,D…很难记得住数据在哪台设备的哪个应用里
◆ 软硬件能力割裂问题
• 在小设备里,塞不进更多硬件
• 设备ABCD有大量硬件资源无法复用,创造更大价值
◆ 多设备交互割裂问题
• 试图用单设备的交互逻辑来解决多设备的交互问题
• 多设备新的交互方式
1. 应用:可流转/迁移,一次开发多端部署
2. 数据:分布式文件,分布式数据库,分布式沙箱
3. 硬件:“超级终端”,互助,共享,弹性扩展
4. 交互:更自然多模态交互,空间拓扑交互
6. OpenHarmony的设计目标
• 消费者对单设备的诉求基本已被满足,面临体验瓶颈
• 无法突破单设备约束,导致用户新的需求难以被满足
功能机
让多个智能设备“组合”在一起为消费者更好的服务
智能机
媒体影音
预装的有限功能
语
音
短
信
智慧出行
4M+ 应用
通
讯
录
。。。
软件不可变 软件可变 软件可变
硬件不可变 硬件不可变 硬件可变
智慧教育
7. 目录
• OpenHarmony设计理念
• OpenHarmony关键架构
• OpenHarmony社区进展
8. OpenHarmony技术架构概览
9. OpenHarmony版本演进
OpenHarmony 1.0
支持轻量无屏设备
20年9月10号
应用
开发
OpenHarmony 3.0 OpenHarmony 3.1 OpenHarmony 3.2 OpenHarmony 4.x
支持轻量带屏设备 支持简单Standard设备 支持复杂Standard设备 Standard设备开发增强 Standard设备开发完善
以PMC公告为准 以PMC公告为准
21年5月30日
21年9月30日
22年3月30号
ArkUI:Uikit组件 ArkUI:UI组件&动效增强 ArkUI:声明式,CSS动画 ArkUI:Canvas绘制,高级组件 ArkUI:组件自定义和扩展 ArkUI:支持跨平台
应用框架:元能力,JS API 应用框架: JS API增强 应用框架:Service,Data Ability 应用框架:卡片,多用户,应用常驻 应用框架:stage模型 应用框架:新编程模型
软总线:Mini系统COAP发现 软总线:Wifi下的COAP发现
连接, 组网, 消息/字节传输 软总线:BLE被发现,蓝牙消息/字
节传输;Wifi文件传输 软总线:BLE发现和组网,蓝牙文
件传输,P2P文件/流传输 软总线:New IP/同账号组网 软总线:能力增强
分布式数据:分布式数据库 分布式数据:分布式数据对象 分布式数据:数据存储和数据同
步分离 分布式计算:算力互助
分布式硬件:设备管理 分布式硬件:分布式屏幕、相机 分布式硬件:分布式输入 分布式硬件:能力增强
电话:通话,短信,卡管理 电话:蜂窝数据,彩信,网络管理 电话:蓝牙通话,双卡 电话:补充业务完善
媒体:Standard 媒体框架 媒体:播放,相机和音频增强 媒体:H265,相机精确控制 媒体:统一媒体框架
图形:硬件加速,多屏管理 图形:隐式动画,分屏和多窗 图形:统一渲染,多屏,3D 图形:统一渲染支持更丰富效果
安全:秘钥管理 安全:AT权限管控 安全:完整的权限访问模型 安全:分布式安全底座增强
Ark:端内编译和运行时 Ark:eTS, HPP GC,Actor Ark:并行编译,SmartGC Ark:支持static TS语言
HDF:基本框架,显示,输入... HDF:Audio, Camera …. HDF:Sensor,动态卸载 HDF:电池,电源,权限管理 HDF:模型完善,驱动辅助开发
内核:Linux 内核:Linux多版本 内核:多核, CPU热插拔, swap 内核:内存分级回收 更新:统一应用热更新机制
分布式
能力
系统基
础能力
OpenHarmony 2.0 媒体:轻量级播放/录制引擎 媒体:轻量级相机和音频
图形:窗口基本管理能力 图形:合成, Vsync, Display
部件化:可大可小,弹性部署
内核:LiteOS内核
10. 部件化架构设计
11. 部件化架构:可大可小,弹性部署
OpenHarmony部件全集
桌面
Ark
UI
设置
分布
式软
总线
内核
…
设计目标:
图形
图像
多
媒
体
一套源码支持1+8+N设备按需快速拼装
…
驱动框架
都是部件
按需拼装
• 500+部件,定义最小系统部件集
• 支持Mini/Small/Standard系统
• 支持部件Feature配置
• 支持测试套件按部件挑选
• 支持部件间依赖关系看板
• 部件ROM/RAM持续优化
耳机
(Mini)
摄像头
(Small)
平板
(Standard)
12. 部件生命周期E2E设计和管理,实现部件化架构治理
•
•
•
部件基本属性定义
部件设计规范
部件设计管理平台
•
•
•
实现与设计一致性看护
部件间解耦设计
部件Feature设计
审核
•
•
合入
同意
SIG Leader
Committer
SIG孵化
开发者
测试套件按部件编译执行
部件独立验证技术
OpenHarmony
SIG
PMC
4、部件部署
3、部件测试
2、部件开发
1、部件设计
OpenHarmony
测试团队
测试
•
•
•
•
最小系统版本定义和构建
部件按需配置拼装
部件按需启停/动态加载
ROM/RAM基线看护
审核人员
版本构建
13. 部件设计:建立部件设计规范和管理平台,设计可视化
OS能力定义标准化
部件属性
部件设计管理平台
定义说明
中文名称 部件名称为名称形式,体现部件功能
英文名称 在系统内全局唯一,不超过63个有效英文字
符,部件名称为名词形式,需要体现出部件的
功能,使用内核⻛格命名,例如:unix_like
功能描述 一句话简要描述组件功能信息。
特性 部件可配置的特性列表,特性比组件更小粒度
的配置,用户可配置。
源码目录 1、路径规则:领域(foundation、domains或
base等)/子系统名/部件名/ 架构分层
(frameworks 、interfaces等)。interfaces/
innerkits为系统内接口,interfaces/kits为开发
者可使用的接口。
2、建仓规则:"子系统名_部件名"为仓名。
规格 RAM、ROM占用,功能规格参数,例如音频
播放支持的采样率、声道数量、位宽。
依赖 依赖的部件以及三方开源软件。
部件设计规范:
https://gitee.com/openharmony/docs/blob/master/zh-cn/design/OpenHarmony部件设计和开发指南.md
14. 部件开发:部件实现与设计一致性看护
部件架构管理
平台
1、获取部件列表
http: request.get(url, component_list)
一致性检查工具
白名单
3、读取不需
要检查的部
件白名单
4、部件架构
管理平台与
manifest部件
名、仓名检查
6、每日定时任务输出不
符合规则的部件
5、仓名、路
径规则检查
2、获取ohos_trunk repo信息
repo init -u http://mgit-tm.***.***.com/hmf/
manifest.git -b ohos_trunk --no-repo-verify
ohos_trunk
manifest
7、CI部署拦截部件架构
管理平台不存在的和不符
合命名规则的提交
(project: hmf/
manifest, branch:
ohos_trunk)
15. 部件开发:部件间依赖看板,实现部件间解耦看护
循环依赖!
部件看板:http://ci.openharmony.cn/quality/componentDashboard/componentList
16. 部件测试:测试套件按部件执行,精准测试
通过config.json配置完成XTS、子系统、部件源码的编译关联
ArkUI
部件
软总线
电话
图形 媒体 账户
内核 驱动 …
最小部件
可选部件
ROM镜像
编译
测试套件
A产品
XTS套件
B产品
XTS套件
C产品
XTS套件
单一部件XTS
●
●
●
●
部件名称
部件测试用例
Syscap能力
特性能力
17. 部件部署:最小系统部件集定义
最小系统设计原则:
1、系统使能依赖的最小部件;
如:Kernel、驱动框架;
2、OH必选特征相关部件;
如:分布式软总线、HDF
3、OH安全基础能力部件;
如:huks、device_auth
4、OH生态治理部件;
如:syscap_codec
18. 部件部署:部件按需拼装
•
•
•
部件源码编译的输出一般为库、可执行文件和配置文件。
部件的编译输出按分区和目录进行部署, 同一个部件的编译输出可部署到不同设备上 。
最小系统部件集基础上通过product/config.json按需配置。
/vendor/company/product/config.json
{
"product_name": "demo",
"ohos_version": "OpenHarmony 3.1",
"device_company": "hisilicon",
"board": "hispark_taurus",
"kernel_type": "liteos-a",
"kernel_version”: "2.2.0",
"subsystems": [
{
"subsystem": "startup",
"components": [
{ "component": "syspara_lite", "features":[] },
{ "component": "init", "features":[] }
]
},
{
…
},
{
"subsystem": "kernel",
"components": [
{ "component": "liteos_a", "features":[] }
]
},
],
"product_adapter_dir": "//vendor/company/product/hals",
}
19. 分布式框架设计
20. 个人拥有的智能设备越来越多,跨设备体验越发重要
人均持有设备统计和预测 (单位:台)
四大核心诉求
体验一致:
例如:手机上的丰富的应用能
在其他终端上使用
体验连续:
例如:视频播放进度能跨设
备迁移
一致 连续
互补 协同
硬件优势能互补:
例如:手机能使用⻋机上的
GPS进行辅助定位
消费者期望:用最合适的设备,在最合适的时机,做最适合的事
软件与内容能协同:
例如:手机的地图信息与⻋
机的地图协同使用
21. 分布式框架:将复杂的设备间应用交互封装成组件调用
OpenHarmony Ability
Android应用
APP Pack
Ability1
数据读写
Ability12
……
分布式UI框架
文件传输
分布式任务调度
认证
认证
连接
连接
分布式数据管理
分布式设备管理
传输
传输
分布式软总线
OpenHarmony
设备A
设备B
设备A
设备B
22. 分布式框架:支持应用天生分布式
应用
播控中心
元能力
API
分布式包管理
多屏协同
超级桌面
多端协同
框架
分布式数据管理
WeLink
多媒体
数据存储
跨端迁移
框架
分
布
式
超级终端
投屏
分布式硬件
分布式图库
权限
分布式剪贴板
框架
键鼠穿越框架
分布式运行管理
分布式相机
Arkui
窗口
分布式卡片
管理框架
分布式窗口管理
分布式拍照
分布式文件管理
…
…
分布式拖拽框
架
分布式权限管理
分布式设备安全等级
应用描述文件 系统分享 全平台窗口策略 多实例 设备管理 缓存管理 权限同步 安全等级同步
事件监听 存储空间管理 输入法窗口管理 组件形态 分布式相机 元数据管理 权限使用记录 安全等级规范
免安装 安全隐私等级 沉浸式效果 运行管控 分布式屏幕 分包依赖 K-V存储能力 窗口动效 生命周期 分布式音频 权限使用提醒 安全等级查询
精准分发 数据库能力 窗口管理能力 环境变更 分布式输入 全局包管理 全局一份数据 组件与窗口解耦 动态调度 分布式Sensor 多用户支持 多用户支持 分布式窗口 多用户支持 多硬件组合
预读预取
冷热管理
安全等级设置
设备管理
传输控制
分布式软总线
发现
底层软件
连接
组网
传输
消息
Kernel & HAL
字节
文件
流
23. 分布式框架:分布式硬件池化架构
音频业务服务
相机业务服务
外设输入服务
…
统一硬件管理平台
逻辑与物理硬件映射
数据处理
•
硬件协同与分发
全局硬件资源池抽象模型,
统一管理、即插即用
全局硬件资源管理
•
统一硬件抽象接口
支持硬件类型扩展、按需部
署
全局硬件资源池
音频1
音频3
音频2
相机1
相机2
•
屏幕2
相机3
逻辑与物理资源实现解耦,
软件定义硬件
屏幕1
…
24. 案例:分布式硬件互助能力运用
两个平板组成一个超级平板,提供更酷炫的娱乐体验
25. ArkUI开发框架设计
26. ArkUI开发框架概览
ArkUI
(简洁自然声明式范式 + 类Web范式
+ 高性能声明式后端引擎 + 一致性渲染)
■
类Web范式
方舟编译器和运行时
(统一字节码 + 高效FFI + 类型加速)
应用
自研声明式UI范式
转换层
方舟
编译器和运
行时
ArkUI - 前端
声明式UI后端引擎
(前后端一体化渲染管线)
I
DE
/ 工
具
链
渲染引擎
方舟工具链
字节码
ArkUI –
后端
平台适配层 & 平台桥接层
OpenHarmony/HarmonyOS
ArkTS/JS
Android
方舟
运行时
方舟
编译器
本地代码
iOS
...
27. ArkUI的声明式范式关键特征
类自然语言的UI结构描述,丰富的开箱即用的多态组件,积木式组件组合
1、 简洁自然声明式语法,
统一UI表达
2、多态组件/动态布局,
简化多设备UI适配
3、多维度状态管理,
简化数据传递&UI变更
@Component
struct IndexPage {
build() {
Row() {
TabBar()
Tabs() {
TimelinePage()
AlbumSetPage()
}
}
}
}
@Component
struct TimelinePage {
build() {
TabContent() {
Stack() {
Grid() {
LazyForEach(data, (item) => {
GridItem() {
ImageGridItemComponent(item)
}
……
}
动效示例
@Component
struct ImageGridItemComponent {
build() {
Stack() {
Image(this.pixelMap)
.sharedTransition(this.shareId)
}.onClick(() => {
// 路由跳转
router.push({uri:'/pages/PhotoItem'})
})
}
}
28. ArkUI跨设备 – 多设备UI适配
顶部
场
景
样
例
入口图标
典型场景样例
分栏
图文/图片详情等大图大字
体典型场景
响应式布局:响应式组件+响应式能力
列表
侧边栏
网格
自适应布局:自适应组件+自适应能力
栅格断点系统
Row/Column/Stack/Flex自适应布局组件
布局
能力
自适应能力
断点
栅格
分层参数/主题⻛格
视觉
交互
圆⻆尺寸
颜色
边框
字体
媒体查询
多态组件
交互归一
29. ArkUI跨设备–跨设备能力适配(延伸到百K级,M级设备)
轻设备
JS
HML
CSS
类Web范式
范式编译器 1. 预编译
范式中间表示 2. JS框架下沉
JS Framework 3. 轻量JS引擎
4. 轻量UIKit/图形引擎
解析
3
轻量JS引擎
1
ByteCode
2 JS Framework 下沉
4
轻量UIKit
图形引擎
组件树
30. ArkUI跨OS平台
ArkUI-X开源项目社区 OpenHarmony开源项目社区
ArkUI OS适配层/工具链/API OS适配 ArkUI/能力API定义和实现/…
能力API
OS适配实现
ArkUI
OS适配实现
Android
iOS
Windows
工具链
/ IDE 声明式范式
… 声明式UI后端
(布局/控件/动效/交互等)
类Web范式
方
舟
引
擎
API
扩展
机制
图形引擎
平台抽象/桥接层
目前华为和阿里巴巴,美的,深开鸿一起共建,已有Android和iOS基础支持
https://gitee.com/arkui-x (目前是定向开源)
31. ArkUI跨OS平台
跨平台开发框架SDK和Sample工程构建演示
下载代码->构建SDK->创建工程->编译目标平台可执行文件
同一Sample工程
在iOS&Android上运行示例
32. 目录
• OpenHarmony设计理念
• OpenHarmony关键架构
• OpenHarmony社区进展
33. OpenHarmony社区共建进展
共建者:5100+人
代码量:近亿行
共建者:1000+人
共建者:100+人
代码量:700万行
2020年9月开源
2021年度
2022年度
社 区 活 跃 度
No.1 110款 28个 14万+ 51家 52个 29个
开源社区 Gitee 指数 商用设备 发行版 Pull Request 共建单位 SIG组 捐赠单位
34. 累计落地110款产品,覆盖金融、教育、交通等领域
金融
教育
代码量:700万行
扫码支付终端
电子签名柜外清
应用开发实验箱
智写板
桌面
智能终端
智能
收款音箱
无线
POS 终端
点阵笔
智能家居
电子班牌
智能家居中控屏
加湿器
交通
取暖器
枪机摄像头
数字政务
商务平板
工业
智能工业平板
工业中控屏
电子
学生证
蒸箱
冰箱
净水器
交通
控制器
广告机
智行电子哨兵
边缘计算小站
智能网关
35. 2022年迭代更新5个版本,支撑29款复杂带屏设备商用
2022.3.30 2022.5.31 2022.7.30 2022.9.30 2022.11.30
OpenHarmony 3.1 Release
支持复杂带屏设备 OpenHarmony 3.2 Beta1 OpenHarmony 3.2 Beta2 OpenHarmony 3.2 Beta3 OpenHarmony 3.2 Beta4
商用的复杂带屏设备(29款)
桌面智能终端 智行闸机
无线POS终端 电子签名柜外清
智行电子哨兵
智能零钱宝
电子学生证
32寸广告机
无线POS终端
智能POS终端
便携式制卡机
商务平板
智能POS机
商务平板
桌面智能终端
智能人脸识别终端 访客一体机
人脸支付终端 工业中控屏
36. 238款产品通过OpenHarmony社区兼容性测评
110 款
商用设备
28 款 100 款
软件发行版 开发板/模组
238款产品通过测评
覆盖教育、交通、金融、家居、安防等多个行业
商 用 设 备 : 5 0 家 厂 商 | 11 0 个 产 品
发行版: 15 家厂商 | 28 个产品
模组 / 开发板: 48 家厂商 | 100 个产品
37. API 9将支持手机、平板、PC等复杂带屏设备应用开发
API 9
18000+ APIs
声明式UI能力 应用开发能力 多媒体能力 WEB 能力 通信能力 分布式能力
• MVVM 编程模型 •Workers 多线程能力 •音视频录制 •Cookie 权限配置 •路由绑定 •跨端资源分享接续
• 声明式开发范式 • 线程间数据共享 •音视频播放 • Cookie 保存和清除 •http 2.0 •跨端服务迁移
• 装饰器能力增强 • Stage 模型 •音视频编解码 •HTTPS 双向认证 •gzip 压缩 •本地 RDB
• 高级 UI 组件 •ExtensionAbility 机制 •音频事件监听 •Web文档预览编辑 •http 并发框架 •DataShare
• 相对布局 •测试框架能力 •hls/https 点播 •⻚面内容选择复制 •TLSv1.2 和 TLSv1.3 •本地 KVDB
• 原子布局能力 •FA 卡片开发 • 视频缩放模式 •⻚面搜索/保存 •Wlan、蓝牙、NFC 接口 • 自定义布局 • 媒体数据管理 •⻚面缩放 • 扁平化布局 • 多应用焦点管理 •地理位置
• 响应式布局组件
• 动效能力
• 可复制/粘贴能力
• XcomponentUI
• 2D/3D绘制能力
• LocalStoragee
•媒体播放
38. 关注OpenHarmony社区获取更多信息!谢谢!
关注官方公众号
官网网址
w w w . o p e n h a r m o n y. c n
39.