跳到主要內容

使用 Flutter 建置 Linux 應用程式

本頁討論使用 Flutter 建置 Linux 應用程式時的獨特考量,包括 shell 整合和準備應用程式以進行發佈。

與 Linux 整合

#

Linux 程式設計介面,包含函式庫函式和系統呼叫,是圍繞 C 語言和 ABI 設計的。幸運的是,Dart 提供了 dart:ffi 套件,使 Dart 程式可以呼叫 C 函式庫。

外部函式介面 (FFI) 允許 Flutter 應用程式使用原生函式庫執行以下操作

  • 使用 malloccalloc 分配原生記憶體
  • 支援指標、結構和回呼
  • 支援應用程式二進位介面 (ABI) 類型,例如 longsize_t

若要了解更多關於從 Flutter 呼叫 C 函式庫的資訊,請參閱 使用 dart:ffi 的 C 互通性

許多應用程式受益於使用套件,將底層函式庫呼叫包裝在更方便、慣用的 Dart API 中。Canonical 建置了一系列套件,重點在於在 Linux 上啟用 Dart 和 Flutter,包括支援桌面通知、dbus、網路管理和藍牙。

一般來說,許多其他套件支援建立 Linux 應用程式,包括常見的套件,例如 url_launchershared_preferencesfile_selectorpath_provider

準備 Linux 應用程式以進行發佈

#

可在專案中的 build/linux/x64/<建置模式>/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 封裝指南