使用 Flutter 构建 Linux 应用程序
使用 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 Store,请参阅 将 Linux 应用程序构建并发布到 Snap Store。
额外资源
#要了解如何为您的 Flutter 桌面应用程序创建 Linux Debian (.deb) 和 RPM (.rpm) 构建,请参阅逐步的 Linux 打包指南。