使用 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 打包指南。