查看: 186|回复: 2

Flutter适配OpenHarmony方案预研——创建(上)

[复制链接]

2

主题

2

回帖

18

积分

新手上路

积分
18
发表于 2025-3-30 15:06:49 | 显示全部楼层 |阅读模式
Flutter适配OpenHarmony方案预研——创建(上)

(文章已获得诚迈科技资深研发工程师-廖锦锐授权)


Flutter 从上到下可以分为三层:框架层、引擎层和嵌入层。

最上层为框架层,使用 Dart 语言开发,面向 Flutter 业务的开发者;
中间层为引擎层,使用 C/C++ 开发,实现了 Flutter 的渲染管线和 Dart 运行时等基础能力;
Embedder(嵌入层), Flutter 最终渲染、交互是要依赖其所在平台的操作系统API,嵌入层主要是将 Flutter 引擎 “安装”到特定平台上。Flutter 代码可以通过嵌入层,以模块方式集成到现有的应用中,也可以作为应用的主体。Flutter作为市场主流的跨平台应用去适配兼容OpenHarmony已成为大势所趋。

由于Flutter官方目前没有提供适配OpenHarmony的版本,OpenHarmony-SIG组织基于已有flutter版本通过OpenHarmony原生提供的平台能力,重新实现了一遍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回调函数。

平台容器的构建:
OpenHarmony系统的UI框架提供了很多常用视图组件(Component),如按钮、文字、图片、列表等。但为了实现Flutter的渲染,需要抛开这些上层组件,获得直接绘制的能力。
OpenHarmony提供了SurfaceProvider类,它管理的Surface对象可以用于视频解码后的展示。这可以被用来为Flutter引擎提供用于渲染的绘图表面。

版本降级:由于OpenHarmony目前仅支持flutter_flutter 3.7.12版本和dart sdk 2.19.6版本,因此需要对现有项目进行版本降级处理。

第三方库支持:在适配过程中,可能会遇到第三方库版本不兼容的问题。此时,可以通过查看库的pubspec.yaml文件历史记录,找到兼容flutter_flutter 3.7.12版本的库版本,并在项目的pubspec.yaml中进行设置。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0

主题

391

回帖

810

积分

高级会员

积分
810
发表于 2025-8-4 22:00:35 | 显示全部楼层
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инйо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо

0

主题

391

回帖

810

积分

高级会员

积分
810
发表于 2025-8-7 16:01:51 | 显示全部楼层
http://tuchkas.ru/
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表