使用 Flutter 構建 Linux 應用
本頁將討論使用 Flutter 構建 Linux 應用時特有的注意事項,包括 Shell 整合和應用準備以供分發。
整合到 Linux
#Linux 程式設計介面(包括庫函式和系統呼叫)是圍繞 C 語言和 ABI 設計的。幸運的是,Dart 提供了 dart:ffi 包,它允許 Dart 程式呼叫 C 庫。
外部函式介面 (FFI) 允許 Flutter 應用與原生庫執行以下操作:
- 使用
malloc或calloc分配原生記憶體 - 支援指標、結構體和回撥
- 支援如
long和size_t等應用程式二進位制介面 (ABI) 型別
要了解更多關於從 Flutter 呼叫 C 庫的資訊,請參閱 使用 dart:ffi 進行 C 互操作。
許多應用會受益於使用一個封裝底層庫呼叫並提供更便捷、更符合習慣的 Dart API 的庫。Canonical 構建了一系列庫,重點在於為 Dart 和 Flutter 在 Linux 上提供支援,包括對桌面通知、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 打包指南。