HarmonyOS应用程序框架揭秘【内有学习福利】
在HarmonyOS分布式开发中,应用程序框架是应用开发的基础设施。随着越来越多设备的智能化,在多设备场景下,应用开发面临以下挑战:
1. 多设备的形态差异。 多样化的屏幕适配 - 包括不同大小,不同分辨率,不同形状,横屏、竖屏、折叠屏等; 多样化的交互方式 – 包括语音、触摸、旋钮、键盘、笔、3D手势等
2. 多设备的能力差异。 内存从百KB级到GB级, 主频从百M级到G级等
HarmonyOS的解决策略主要是通过 UI信息结构抽象以及交互事件归一来简化多设备的形态差异下应用开发,同时通过统一的开发范式,协同可伸缩的运行时设计,简化应用在不同设备上部署。如下所示:
典型的HarmonyOS应用部署运行总体视图如下:
一个HarmonyOS应用包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)。通过云侧部署,最终根据设备的形态会下载相应的HAP在端侧执行。应用程序框架主要包含三个部分:
1. Ability – 应用的基础单元。 可免安装,可跨设备调用
2. 用户程序框架 – 包管理/Ability管理/分布式管理
3. UI 编程框架 – 应用的用户界面
注:从应用开发角度,还需要各种Kit的能力(比如网络/数据等设备访问能力),这块不在这里展开。
和传统的单设备场景下不同,HarmonyOS中,应用程序框架深度结合了跨设备的能力。 Ability作为基础的运行单元, 结合底层分布式的基础设施,可以跨设备免安装调度和运行
Ability的定义如下所示:Ability 的分布式调用, 状态迁移/同步示例如下。通过相应的分布式API设计,简化跨设备的应用开发。
用户程序框架的架构视图和运行视图如下。这里的Ability/包管理机制中会结合DMS(分布式管理服务),相连设备中Ability可以被发现和管理,进行相应的统一调度,方便不同应用在不同设备上运行。
除了上述的Ablilty/用户程序管理,还有一个重要的部分是UI编程框- ACE (Ability Cross-platform Environment), 它支持主流的语言生态 – Java & JS(JavaScript)。 其中 ACE Java 提供相对细粒度的UI编程接口,以命令式方式驱动; ACE JS 则是相对高层的UI描述,以声明式方式驱动。如下图所示:
其中ACE JS 提供了一种统一的跨平台解决方案。 核心设计思路:
1. 开发范式方面,借鉴主流的Web 前端框架设计,降低开发成本
2. 在运行效率方面,在C++层设计实现了统一的声明式UI后端,结合并行化渲染,预编译等机制实现了高性能渲染。在富设备上(比如大屏/手机等),一些典型场景(比如长列表渲染等)可以达到应用秒开,以及滑动满帧的体验
3. 在跨平台方面,实现了独立的自绘制引擎,能够方便的移植到不同平台,结合自适应布局以及多态UI组件能力,实现了实时的跨端的一致性渲染体验 (PC上的UI 渲染路径和设备上一致),并能够在PC上同时进行多设备以不同方式渲染。在ACE JS 中,主要模块(前端框架,JS 引擎,以及渲染后端实现等)是可伸缩设计的,它也具备运行在极小的设备上的能力(比如百K级内存的设备),并基于统一的开发范式。如下所示:HarmonyOS的应用程序框架主要围绕多设备,跨设备的场景重点设计和实现了应用的基础单元,应用和包管理,UI编程框架,并结合相应的底层分布式基础设施进一步简化了多设备/跨设备场景下的应用开发。
好文章。。。。。。。。。顶一个。
图文结合 讲解的很清晰