ArkUI跨平台设计总体说明
简介
本文档描述ArkUI开发框架跨平台运行能力相关的总体技术方案。
范围
ArkUI是面向全设备的UI开发框架,已通过OpenHarmony代码仓开源,其关键组成包括:
- 开发模型;
- 应用界面&交互;
- 扩展机制-使能三方组件&平台API扩展机制。
- 开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。
ArkUI-X旨在将ArkUI开发框架扩展至其他OS平台(Android/iOS/Windows等),使开发者能够基于ArkUI开发框架,复用绝大部分的应用代码(UI以及主要应用逻辑),即可部署到不同OS平台上。
假设和约束
本文提到的跨平台是指UI部分的跨平台,其UI代码可以重用,其它应用对平台依赖的能力,需要应用层面进行适配,或通过JS API封装机制(NAPI),进行实现暴露到JS层。
涉及平台能力的JS API(比如网络、存储等)请参考OpenHarmony中的定义,需要通过在不同平台的封装实现达到复用的目的。
本文主要是通用方案设计说明,并以Android平台做为示例说明,其他平台的基本设计思路类似,但相关设计需进一步细化补充。
总体视图
从设计之初,跨平台就作为ArkUI最基本的设计目标之一,当前已支持基础的跨平台架构。相关的设计思路如下:
- 采用 C++ 编写整体后端引擎代码,保持在多平台的可移植性,最小化平台依赖,降低平台移植成本。
- 整体绘制采用自渲染机制,降低平台依赖,同时进一步提升绘制效果的一致性。
- 抽象出平台适配层以及平台桥接层,以便不同平台的适配。
模块功能介绍
ArkUI主要包括以下几个模块:
- 研发模型,兼容OpenHarmony应用的Stage开发模型,支持基于ArkTS的声明式开发范式,可跨平台。
- 声明式UI后端引擎,包括布局,渲染,C++ UI组件,事件机制等,可跨平台。
- API扩展机制,基于NAPI机制,可跨平台。 不同平台需要各自扩展具体的API实现。
- 工具链/SDK, 工具链可跨平台,SDK需基于不同平台构建。
另外,ArkUI依赖的ArkTS引擎以及图形引擎,也可跨平台。
ArkUI声明式UI后端引擎,主要完成整体pipeline流程控制、视图更新、布局系统、多页面管理、事件分发和回调、焦点管理、动画机制、主题机制、资源管理/缓存/provider等。 其中的UI组件,主要通过显示相关组件细粒度化,动画、事件、焦点等机制组件化,满足适配不同前端所需要的灵活性。
整体的跨平台需求,就是扩展ArkUI开发框架到其他OS平台,帮助开发者降低多平台应用开发成本。
通过ACE Tools命令行工具创建跨平台应用工程,开发者基于一套主代码,就可以构建支持多平台的精美、高性能应用。
方案设计
跨平台应用包结构设计
跨平台应用目录结构,包含一套为ArkUI-X开发者提供的应用工程模板,提供构建OpenHarmony应用、Android应用、iOS应用的能力。应用工程包结构设计如下:
ArkUI-X应用工程
├── .arkui-x
│ ├── android // Android平台相关代码
│ └─