使用 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/<構建模式>/bundle/ 目錄下。在 bundle 目錄中,除了可執行二進位制檔案外,你還可以找到兩個目錄:
lib包含所需的.so庫檔案data包含應用的資源資料,如字型或影像
除這些檔案外,你的應用還依賴於編譯時所連結的各種作業系統庫。要檢視庫的完整列表,請在應用目錄中使用 ldd 命令。
例如,要建立一個名為 linux_desktop_test 的新 Flutter 桌面應用、對其進行構建並檢查其系統庫依賴項,請執行以下命令:
flutter create linux_desktop_test
cd linux_desktop_test
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 打包指南。