Flutter适配OpenHarmony方案预研——创建(上)
Flutter适配OpenHarmony方案预研——创建(上) (文章已获得诚迈科技资深研发工程师-廖锦锐授权) Flutter 从上到下可以分为三层:框架层、引擎层和嵌入层 最上层为框架层,使用 Dart 语言开发,面向 Flutter 业务的开发者 中间层为引擎层,使用 C/C++ 开发,实现了 Flutter 的渲染管线和 Dart 运行时等基础能力; Embedder(嵌入层), Flut
Flutter适配OpenHarmony方案预研——创建(上)
(文章已获得诚迈科技资深研发工程师-廖锦锐授权)
Flutter 从上到下可以分为三层:框架层、引擎层和嵌入层
最上层为框架层,使用 Dart 语言开发,面向 Flutter 业务的开发者
中间层为引擎层,使用 C/C++ 开发,实现了 Flutter 的渲染管线和 Dart 运行时等基础能力;
Embedder(嵌入层), Flutter 最终渲染、交互是要依赖其所在平台的操作系统API,嵌入层主要是将 Flutter 引擎 “安装”到特定平台上。Flutter 代码可以通过嵌入层,以模块方式集成到现有的应用中,也可以作为应用的主体。
由于Flutter官方目前没有提供适配OpenHarmony的版本,OpenHarmony-SIG组织基于已有flutter版本通过鸿蒙原生提供的平台能力,重新实现了一遍Flutter嵌入层,提供了一套支持OpenHarmony平台的Flutter SDK 3.7.12-ohos 版本。只需要下载这个版本的Flutter SDK 即可支持IDE或者终端使用Flutter Tools指令编译和构建OpenHarmony应用程序。
为了实现Flutter在OpenHarmony系统上的原生支持,需要对Flutter的嵌入层进行适配。这主要包括以下几个方面的工作:
渲染流程的适配:
Flutter的图像渲染流程涉及设备发起垂直同步(VSync)信号、UI线程的渲染管线(Animate/Build/Layout/Paint)、Raster线程的组合和栅格化,以及最终通过OpenGL或Vulkan将图像上屏。
在OpenHarmony系统上,需要监听设备的VSync信号并通知Flutter引擎,同时构建平台容器,为Flutter引擎的图形渲染提供用于上屏的窗口对象。
VSync信号的监听及传递:
NativeVsync模块用来获取系统VSync信号,提供了OH_NativeVSync实例的创建、销毁以及设置VSync回调函数的能力,VSync信号到来时会调用已设置的VSync回调函数。
平台容器的构建:
鸿蒙系统的UI框架提供了很多常用视图组件(Component),如按钮、文字、图片、列表等。但为了实现Flutter的渲染,需要抛开这些上层组件,获得直接绘制的能力。
鸿蒙提供了SurfaceProvider类,它管理的Surface对象可以用于视频解码后的展示。这可以被用来为Flutter引擎提供用于渲染的绘图表面。
版本降级:由于鸿蒙目前仅支持flutter_flutter 3.7.12版本和dart sdk 2.19.6版本,因此需要对现有项目进行版本降级处理。
第三方库支持:在适配过程中,可能会遇到第三方库版本不兼容的问题。此时,可以通过查看库的pubspec.yaml文件历史记录,找到兼容flutter_flutter 3.7.12版本的库版本,并在项目的pubspec.yaml中进行设置。
更多推荐
所有评论(0)