Flutter on Raspberry Pi:从入门到精通的完整指南!

360影视 动漫周边 2025-06-06 16:23 2

摘要:最近,在 Google IO 会议上展示了一个在树莓派上运行 Flutter 的可能性。然而,该会议并未提供全面的、一步一步的指南供用户参考。本文旨在填补这一空白,提供详细的操作步骤,帮助你在树莓派上运行 Flutter。

最近,在 Google IO 会议上展示了一个在树莓派上运行 Flutter 的可能性。然而,该会议并未提供全面的、一步一步的指南供用户参考。本文旨在填补这一空白,提供详细的操作步骤,帮助你在树莓派上运行 Flutter。

通过遵循本文中概述的步骤,你将获得在树莓派上设置 Flutter 的知识和信心。无论你是初学者还是经验丰富的 Flutter 开发者,本指南都将确保你对过程有清晰的了解,并能顺利完成。

在本文中,我们特别关注使用树莓派作为我们的嵌入式设备。然而,需要注意的是,在大多数工业项目中,您不会使用树莓派,而是使用其他基于arm64的解决方案。在这方面,我们使用的方法也适用于大多数其他基于arm64的SOC,甚至在生产中也适用!

在深入细节之前,我想对 Moritz 在创建本文时提供的宝贵帮助表示感谢。同时,我也要感谢 Snapp Embedded 提供必要的环境和支持,使我能够撰写本文。

在树莓派上运行 Flutter 需要什么?

在开始开发过程之前,更重要的是要清楚地了解在树莓派上运行 Flutter 需要什么。让我们来看看必要的组件:

1.树莓派 4 Model B:这主要硬件组件。建议至少购买 4GB RAM 版本以获得最佳性能。(2GB 版本应该也能工作。)

2.显示器:如果你已经有显示器,可以使用 micro HDMI 线缆将其连接到树莓派。或者,你可以考虑购买官方的 7 英寸树莓派显示器以进行专用设置。

3.SD 卡:树莓派需要 SD 卡进行存储。建议使用高质量的 Class 10 microSD 卡以获得最佳性能。在大多数情况下,32GB 的容量应该足够。

4.电源:为树莓派提供可靠的电源至关重要。你可以使用官方的树莓派电源,或者任何能稳定提供 5.0V / 3.0A 输出的充电器。

5.输入设备:为了与树莓派交互,需要使用鼠标和键盘。可以通过 USB 或蓝牙将它们连接到树莓派。

确保拥有这些必要的组件,就可以准备好设置树莓派来运行 Flutter ,并可以满怀信心的开始你的开发之旅。

开发环境

当涉及到为嵌入式设备创建应用程序时,开发过程不同于传统的移动应用程序开发。在移动设备开发中,您使用笔记本电脑或PC作为开发设备,使用手机作为运行设备,与此不同,嵌入式设备开发需要使用不同的方法。

在嵌入式设备开发的情况下,您的树莓派既是运行设备又是开发设备。这意味着您可以使用树莓派来构建和测试您的Flutter应用程序,提供独特的开发体验。您可以使用我们将在本文中展示的一些方法进行交叉编译,但这通常会带来额外的挑战,我们在此文中不涉及交叉编译。此外,在树莓派上构建实际上并不需要很长时间,所以不妨去喝杯咖啡。

此外,你还可以选择利用某些技术,例如将代码推送到 GitHub 并在树莓派上获取它。因此,你可以在桌面机器上开发大部分应用程序,实际上,这种方法的效果比我们想象的要好。但是值得注意的是,这种方法可能会为你的开发过程引入额外的复杂性和挑战,不过我们目前还没有遇到任何问题。

使用什么操作系统

为树莓派选择合适的操作系统(OS)对于有效运行 Flutter 至关重要。重要的是要注意Flutter 不能在 32 位操作系统上运行。幸运的是,有多种 64 位选项可供选择,例如树莓派 OS 64 位(以前称为 Raspbian)和 Ubuntu 64 位。

树莓派64 位系统是一个官方支持的操作系统,它为用户提供友好的界面、有出色的硬件支持和专门针对树莓派设备优化的性能。它预装了用于简化设置的软件和工具,这是在树莓派上运行 Flutter 的一个有吸引力的选择。

除了树莓派操作系统,另一个值得注意的选项是 Ubuntu Core。Ubuntu Core 是为嵌入式设备设计的精简版 Ubuntu,它具有增强的安全性、可靠性和易于管理性。

Ubuntu Desktop 64 位系统 是一个知名且广泛使用的 Linux 发行版,它提供强大且多功能的开发环境。然而,值得注意的是,由于 Ubuntu Desktop 的系统要求较高,对于树莓派等嵌入式设备来说,它可能会比较占用资源。这就是为什么我们不推荐它用于我们的应用程序。

最终,这些选项之间的选择是主观的,取决于个人偏好和需求。值得注意的是,除了树莓派操作系统和 Ubuntu,还有各种其他 64 位 Linux 发行版可供选择,你可以自由选择最符合你需求的操作系统。

在工业场景中,考虑创建一个专门针对你的项目需求定制的自定义发行版,以获得最佳性能和资源利用率可能是有益的。有关更多信息,请查看 Yocto-Project。

https://www.yoctoproject.org/

如何安装树莓派操作系统

为了简化将所选操作系统安装到树莓派上的过程,我们将向你介绍树莓派烧录器。这个用户友好的工具简化了将操作系统镜像写入 SD 卡的过程。下面,我们将提供详细的分步指南,帮助你开始安装。

1.首先,从官方网站下载树莓派烧录器。下载链接。

https://www.raspberrypi.com/software/

2.下载并安装树莓派烧录器后,打开应用程序。

3.你可以从树莓派烧录器提供的可用操作系统列表中选择与想要的操作系统选项,例如树莓派 OS 64 位或 Ubuntu 64 位。

4.或者,如果你已经下载了以 .img 格式提供的自定义操作系统镜像,你可以在树莓派烧录器中选择“使用自定义”选项。这允许你从计算机中选择自定义操作系统镜像文件,并继续进行安装。

5.现在,将 SD 卡插入计算机的读卡器插槽。确保 SD 卡为空或已经备份任何现有数据,因为安装过程将覆盖卡内的内容。

6.在树莓派烧录器中,点击“选择 SD 卡”选项,并从可用驱动器中选择你的 SD 卡。仔细检查以确保选择了正确的驱动器,以避免意外数据丢失。

7.选择 SD 卡后,点击“写入”按钮以启动操作系统镜像写入过程。树莓派烧录器将下载所选的操作系统镜像(如果你在步骤 3 中选择了某个选项)或写入自定义操作系统镜像(如果你在步骤 4 中选择了“使用自定义”选项)到 SD 卡。

8.一旦操作系统镜像成功写入 SD 卡,你将从树莓派烧录器收到通知或确认消息。

9.安全地从计算机的读卡器中弹出 SD 卡。

随着操作系统镜像成功写入 SD 卡,你现在可以准备继续设置树莓派了。将 SD 卡插入树莓派的 SD 卡插槽,并打开设备电源以开始启动过程。树莓派将使用已安装的操作系统进行初始化,允许你继续安装 Flutter 并运行你的应用程序。

Linux 知识探索:显示服务器

在我们深入 Flutter 的安装过程之前,了解 Linux 操作系统的一些基本方面是至关重要的。我们需要熟悉的一个关键组件就是 Linux 上的显示服务器。

如本文所述:

显示服务器是一个程序,负责协调其客户端与操作系统其余部分之间的输入和输出,以及与硬件和操作系统之间的输入和输出。基本上,由于显示服务器的存在,你可以以图形方式(GUI)使用计算机。没有显示服务器,你将只能使用命令行界面(TTY)。

显示服务器为图形环境提供了框架,以便你可以使用鼠标和键盘与应用程序交互。

显示服务器通过显示服务器协议(如 X11)与其客户端进行通信。显示服务器是任何图形用户界面特别是窗口系统中的关键组件。

Linux 上最流行的两种显示协议是 Wayland 和 X Window 系统(X11 或 X.Org)。这些协议定义了图形数据如何在屏幕上传输和渲染,促进了显示服务器、应用程序和硬件之间的通信。

X11,也称为 X.Org,是 Linux 中长期存在的标准显示协议。它为图形显示管理提供了可靠的框架,并提供了窗口管理和网络透明度等功能。尽管年代久远,X11 仍然受到各种桌面环境和窗口管理器的广泛支持。

Wayland 是一个现代、轻量级的显示协议,注重性能、安全性和简化的用户体验。它提供直接渲染、更流畅的窗口管理并且能够减少延迟,所以其在 Linux 发行版中越来越受欢迎。

了解这些知识对于理解我们在接下来将使用的 Flutter 嵌入器的选择至关重要。

在树莓派上运行 Flutter 的选项

当在树莓派上运行 Flutter 时,我们有三个主要选项可供选择:(当然还有其他选项,但在此讨论中,我们将重点关注以下三个。)

1.Flutter Linux 桌面:Flutter 提供对 Linux 桌面环境的支持,允许你直接在树莓派上开发和运行 Flutter 应用程序。此选项提供了最全面和最通用的 Flutter 体验,提供了对 Flutter 全部功能和特性的访问。

2.由 Ardera 开发的 Flutter-pi 引擎嵌入器:另一个选项是 Ardera 开发的 Flutter-pi 引擎嵌入器。它专门设计用于优化树莓派设备上的 Flutter。

3.由 Sony 开发的 Flutter-elinux引擎嵌入器:Sony开发了 Flutter-elinux 引擎嵌入器,旨在实现 Flutter 与嵌入式 Linux 系统的无缝集成。此引擎嵌入器专注于在各种基于 arm64 的选项上运行 Flutter,为运行 Flutter 应用程序提供增强的性能和稳定性。

在本文中,我们将主要关注 Flutter-eLinux,并将其与经典的 Flutter 进行比较。通过探索这两种方法之间的相似性和差异性,我们可以更深入地了解它们各自的优点和局限性。

值得注意的是,Flutter-pi 主要专注于树莓派平台(如文档中所述)。由于我们的目标是找到一个既能在树莓派上运行,又能在各种其他 arm64 设备上运行的解决方案,因此我们只会关注 Sony 提供的解决方案。然而,我们不能也不想判断哪个解决方案更好,我们只想说的是,因为 Sony 解决方案的方法和出色的文档,我们选择了它。

为什么我们需要 Flutter-eLinux?

在我们深入探讨使用这两种方法运行 Flutter 的细节之前,让我们先探索一下 Flutter Linux 桌面和 Flutter-elinux 之间的关键区别。理解这些区别将有助于我们理解为什么我们不在树莓派上使用普通的 Flutter。

如本文所述:

最大的区别是 Flutter-elinux 完全不使用 GTK/GDK。它使用 Wayland、X11 或 DRM 后端。另一方面,Linux 上的 Flutter 桌面严重依赖 GTK/GDK,而 GTK/GDK 又需要 X11。

那么,你可能会问自己,这对我们来说为什么重要?

X11 仍然是许多库和包(尤其是在桌面环境中)的依赖项,所以很难摆脱它,而同时 Wayland 显然是未来的发展方向。

如果我们看看最新的 arm64 硬件,我们会发现(几乎)所有硬件现在都支持 Wayland,而且第一批(来自 NXP 的 iMX8 系列)甚至已经不再支持 X11。

与桌面环境相比,嵌入式解决方案通常使用一个更精简的操作系统,这个操作系统通常是通过 Yocto-Project 等工具单独定制的。因此,使用 Wayland 要容易得多,而且其采用速度也要快得多。如果我们希望在工业应用中使用 Flutter,那么我们绝对应该能够使用 Wayland,而不依赖于 X11。

Linux 桌面与嵌入式 Linux 堆栈

遗憾的是,使用自定义嵌入器会影响插件兼容性。Flutter-elinux 使用了与 Flutter Linux 桌面不同的引擎嵌入器。这意味着,如果你有一个专门为 Flutter Linux 桌面设计的插件,它可能无法与 Flutter-elinux 兼容。在这种情况下,你可能需要创建一个与 Flutter-elinux 引擎嵌入器兼容的插件。查看此 Twitter 线程。

性能比较:Flutter 桌面与 Flutter-elinux

为了评估这两种选项的性能,我们将使用计数器应用和咖啡机应用。我们将在 profile 模式下运行这些应用,并使用开发工具分析它们的性能。

在树莓派上的性能

在第一个场景中,我们将使用带有默认 X11 显示后端的树莓派 OS。

硬件:树莓派 4 Model B 8GB

操作系统:树莓派64 位操作系统(Raspbian)

显示后端:X11(Raspbian 的默认显示后端)。Wayland 目前在树莓派操作系统上仅以 beta 版本提供。尽管如此,为了比较,我们还是在系统级显示服务器之上运行了 Wayland)

重要提示! 在我们的测试过程中,我们遗憾地丢失了一些运行 Flutter-elinux 测试的图片。尽管如此,我们仍然有结果,并且会分享出来。

让我们看看图片。

左侧:计数器应用 — Flutter-elinux — Wayland 后端(在 X11 之上!)— 44 FPS。

右侧:计数器应用 — Flutter-桌面 — X11 后端 — 59 FPS。

无图片:计数器应用 — Flutter-elinux — X11 后端 — 57 FPS。

Flutter-elinux-wayland

Flutter-desktop-x11

现在,让我们用另一个项目来测试这些选项。对于这个比较,我们将使用 Moritz 创建的“咖啡机”项目,该项目涉及更多的复杂性,包括图表和动画。

https://github.com/Snapp-X/coffeemachine

让我们再次看看结果。这次,我们不仅在已经运行的 X11 后端之上启动了 Wayland(正如我们所预期的,这会导致性能不佳),而且我们还尝试直接在树莓派操作系统上运行 Wayland 作为系统级显示服务器,这目前以 beta 版本支持(并且真的不建议使用,也不稳定)。

左侧:咖啡机 — Flutter-elinux — Wayland 后端(在 X11 之上!)— 41 FPS。

右侧:咖啡机 — Flutter-桌面 — X11 后端 — 59 FPS。

无图片:咖啡机 — Flutter-elinux — 直接使用 Wayland 后端(beta)— 55 FPS。

无图片:咖啡机 — Flutter-elinux — X11 后端 — 58 FPS。

Flutter-elinux-wayland

Flutter-desktop-x11

根据 Flutter-elinux 提供的信息,我们可能期望 elinux 的性能更好。然而,结果表明,在某些设置下,Flutter Linux 桌面甚至优于 Flutter-elinux。那么,问题是为什么?

这是 Flutter-elinux 的问题吗?我们不这么认为。问题很可能在于树莓派操作系统的默认显示后端,即 X11。当在 X11 之上运行一个 Wayland 合成器时,它肯定会严重影响设备的性能,导致效率降低。

此外,即使在树莓派 OS 上使用 Wayland 作为系统级选项也没有那么理想,尽管我们可以看到显著的改进,但这种设置远不稳定,并且在系统的其他地方产生了错误。

显然,在树莓派操作系统上最简单的选择是使用 X11 作为系统级选项,并且也将其用于你的 Flutter 开发。然而,对于我们的长期解决方案来说,重要的是也要能够在 Wayland 下运行,这在这里已经得到了证明。

出于好奇,我们还测试了 Ubuntu 下的性能,尽管它是一个桌面环境,但它默认使用 Wayland 作为显示后端。

在 Ubuntu 上的性能

在深入细节之前,重要的是要注意,对于像树莓派这样的设备来说,Ubuntu 可能会占用大量资源。即使是简单的任务,如打开浏览器或运行其他应用程序,也可能需要一些时间,而且默认的用户界面可能会显示出明显的延迟。

我们使用了 Ubuntu 22.04 进行测试,因为它默认使用 Wayland 作为显示后端。查看此资源。

2017 年,Ubuntu 在 17.10 版本中将其设为默认。然而,这个实验并不成功,他们在 Ubuntu 18.04 中又改回了 Xorg。现在,在 21.04 版本中,Wayland 再次成为默认。

在这个特定的测试中,我们只专注于评估 Ubuntu 中 Wayland 的性能,而没有评估 X11 的性能。

左侧:计数器应用 — Flutter-elinux — Wayland 后端 — 42 FPS。

右侧:咖啡机 — Flutter-elinux — Wayland 后端 — 15 FPS。

是的,正如你所看到的,Ubuntu 下的结果非常糟糕,因为 Ubuntu 桌面对于树莓派等嵌入式设备来说太重了。

结论

如果你正在寻找使用 Flutter 创建测试或原型的方法,那么使用树莓派设备和 Flutter 桌面可以提供令人满意的性能。这种设置允许你运行测试应用程序并验证其功能。

然而,当你正在创建一个真正的产品时,你的应用程序是主要且唯一运行的应用程序,那么建议考虑创建一个专门针对你的硬件和应用程序需求定制的自定义 Linux 发行版。

在这种情况下,使用 Wayland 后端的 Flutter-elinux 是一个极好的选择。这种设置确保你的应用程序获得必要的资源,并优化性能,从而提供流畅且可靠的用户体验。

在树莓派操作系统上安装 Flutter

虽然建议遵循官方文档在 Linux 上安装 Flutter,但我们将在此文中提供安装 Flutter 的最简单方法的概述。请注意,安装过程可能会随着时间的推移而演变,因此参考官方文档可以确保你获得最新的说明。

在 Linux 上安装 Flutter 的最简单方法是使用 snapd。在继续之前,请确保你的机器上已安装 snapd。如果尚未安装,你可以在此链接找到安装 snapd 的说明:

https://snapcraft.io/docs/installing-snapd

一旦安装了 snapd,你可以通过使用 Snap Store 或命令行来安装 Flutter。

打开终端并输入以下命令:

sudo snap install flutter --classic

你可以使用以下命令找到你的 Flutter 路径:

flutter sdk-path

如果你更喜欢手动安装 Flutter 或遇到 snap 安装的任何问题,你可以在此链接找到手动安装指南:

https://docs.flutter.dev/get-started/install/linux#install-flutter-manually

在树莓派操作系统上安装 Flutter-eLinux

在使用 Flutter-elinux 在你的机器上安装 Flutter 之前,你需要确保已安装几个依赖库。

这些库包括 curl、unzip、git、clang、cmake(版本 3.15 或更高)和 pkg-config。你可以通过在终端中运行以下命令来安装这些库:

sudo apt install curl unzip git clang cmake pkg-config

一旦安装了依赖库,你就可以继续安装 Flutter-elinux。首先克隆 Flutter-elinux 仓库并将其移动到 /opt/ 目录:

$ git clone
$ sudo mv flutter-elinux /opt/

接下来,更新你的系统路径以包含 Flutter-elinux 二进制文件:

$ export PATH=$PATH:/opt/flutter-elinux/bin

为了确保安装成功且一切正常工作,运行以下命令以检查 Flutter-elinux 环境:

$ flutter-elinux doctor

运行 flutter-elinux devices 命令将显示已连接的设备。你应该看到两个已连接的设备,一个使用 elinux-x11 后端,另一个使用 elinux-wayland 后端。

$ flutter-elinux devices
2 connected devices:

eLinux (desktop) • elinux-wayland • flutter-tester • Ubuntu 20.04.2 LTS 5.8.0-63-generic
eLinux (desktop) • elinux-x11 • flutter-tester • Ubuntu 20.04.2 LTS 5.8.0-63-generic

在 X11 上运行

如果你打算使用 x11 后端,你将需要安装 libx11-dev 库,通过运行以下命令:

$ sudo apt install libx11-dev

然后你可以像这样运行应用程序:

$ flutter-elinux run -d elinux-x11

在 Wayland 上运行

对于 Wayland 后端,你将需要安装 libwayland-dev 和 wayland-protocols 库:

$ sudo apt install libwayland-dev wayland-protocols

如果你计划在系统级 X11 之上运行 Wayland(我们目前推荐这样做),你必须安装一个 Wayland 合成器。最常用的是 Weston,可以通过以下命令安装:

$ sudo apt install weston

因此,在以 wayland 模式运行你的 Flutter 应用程序之前,你可以轻松地通过运行以下命令启动 Weston:

$ weston &

然后运行:

$ flutter-elinux run -d elinux-wayland

IDE 和开发

我们推荐使用 VS Code 作为你的 IDE,因为它轻量级且即使在树莓派上也能运行得很好。

树莓派操作系统

要在树莓派上安装 VS Code,你可以简单地在终端中运行以下命令:

sudo apt update
sudo apt install code

在此链接中找到更多信息。

Ubuntu

如本文档所述,

在基于 Debian/Ubuntu 的发行版上安装 Visual Studio Code 的最简单方法是下载并安装 .deb 包(64 位),可以通过图形软件中心(如果可用)或通过命令行安装:

sudo apt install ./.deb

如果觉得文章不错记得点赞,收藏,关注,转发~

来源:上海晶珩

相关推荐