使用 Flutter 构建 Linux 应用
本页面讨论了使用 Flutter 构建 Linux 应用的独有注意事项,包括 shell 集成和应用分发准备。
集成 Linux
#Linux 编程接口,包括库函数和系统调用,是围绕 C 语言和 ABI 设计的。幸运的是,Dart 提供了 dart:ffi
包,它使 Dart 程序能够调用 C 库。
外部函数接口 (FFI) 允许 Flutter 应用使用原生库执行以下操作:
- 使用
malloc
或calloc
分配原生内存 - 支持指针、结构体和回调
- 支持应用二进制接口 (ABI) 类型,如
long
和size_t
要了解有关从 Flutter 调用 C 库的更多信息,请参阅使用 dart:ffi
进行 C 互操作。
许多应用受益于使用一个包,该包以更方便、更符合 Dart 风格的 API 来包装底层库调用。Canonical 创建了一系列包,重点是支持在 Linux 上使用 Dart 和 Flutter,包括对桌面通知、dbus、网络管理和蓝牙的支持。
一般来说,许多其他包支持创建 Linux 应用,包括常见的包,例如url_launcher
、shared_preferences
、file_selector
和path_provider
。
准备 Linux 应用以进行分发
#可执行二进制文件可在项目下的 build/linux/x64/<build mode>/bundle/
中找到。在 bundle
目录中,与可执行二进制文件一起,您可以找到两个目录:
lib
包含必需的.so
库文件data
包含应用程序的数据资产,例如字体或图像
除了这些文件外,您的应用程序还依赖于已针对其进行编译的各种操作系统库。要查看库的完整列表,请对应用程序的目录使用 ldd
命令。
例如,假设您有一个名为 linux_desktop_test
的 Flutter 桌面应用程序。要检查其系统库依赖项,请使用以下命令:
flutter build linux --release
ldd build/linux/x64/release/bundle/linux_desktop_test
要打包此应用程序以进行分发,请包含 bundle
目录中的所有内容,并验证目标 Linux 系统是否具有所有必需的系统库。
这可能只需要使用以下命令。
sudo apt-get install libgtk-3-0 libblkid1 liblzma5
要了解如何将 Linux 应用程序发布到Snap 商店,请参阅将 Linux 应用程序构建并发布到 Snap 商店。
附加资源
#要了解如何创建 Flutter 桌面应用程序的 Linux Debian(.deb
)和 RPM(.rpm
)构建版本,请参阅分步的Linux 打包指南。
除非另有说明,否则本网站上的文档反映的是 Flutter 的最新稳定版本。页面最后更新于 2025-01-30。 查看源代码 或 报告问题。