By Toradex胡珊逢
简介
在嵌入式 Linux 设备上常使用 Qt 作为开发图形界面应用的框架,随着 web 和移动端图形框架技术快速发展,嵌入式 Linux 也可以从这些技术中受益。由 Google 开发的 Flutter 最初用于 Android 和 iOS 应用开发,后期加入 web、 Windwos 桌面和 Linux 桌面的支持。配合适当的渲染引擎, Flutter 也可以运行在嵌入式 Linux 设备上。文章将介绍如何在使用 Linux BSP 的 Verdin iMX8M Plus 上运行 Flutter 应用。
硬件介绍
本次演示使用基于 NXP iMX8M Plus SoC 的计算机模块 Verdin iMX8M Plus。底板为 Dahlia,该底板可以直接使用 Verdin iMX8M Plus 的 HDMI 显示输出。屏幕则使用支持电容屏的 HDMI 显示器,用于测试 Flutter 应用的交互性。
Flutter 介绍
Flutter 使用 Dart 语言开发,可以跨平台运行,支持 AOT(Ahead of time)预编译,使应用在设备上更高效地运行。对于 Flutter 应用,用户通常只需要开发 apps 代码, Framework、 Engine 和 Embedder都油 Flutter SDK 提供。使用不同的 embedder, Flutter app 可以运行在不同的平台上。目前官方支持embedder 包括 Android, iOS, MacOS、 Windwos 桌面、 Linux 桌面、 Web 浏览器
Linux 桌面需要依赖 GTK 和 X11,现在的嵌入式 Linux 系统已经普遍使用 Wayland,例如 NXP 的 iMX 处理器在新的 BSP 已经不再支持 X11。对于嵌入式 Linux 系统,可以使用下面两个非官方的 embedder。
Flutter-elinux,这是由 Sony 维护的项目,支持 Arm64 和 X64 处理器。可以使用 Wayland 或者 X11 后台,或者直接基于 DRM。
Flutter-pi是针对树莓派开发和优化的 embbeder,其不依赖于 X11 和 GTK 的任何组件。支持 KMS 和 DRI,3D 硬件加速。可以运行在 ARMv7、ARMv8、x86 处理器上。Flutter-pi 拥有更活跃的社区和开发者。结合flutterpi_tool工具可以非常容易地开发 flutter 应用。