跳到主內容

使用 Flutter 構建 Linux 應用程式

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