Flutter 工具支援三種編譯模式,以及一種用於測試的無頭模式。您可以根據開發週期的不同階段選擇不同的編譯模式。您是在除錯程式碼嗎?您需要效能分析資訊嗎?您準備好釋出應用了嗎?

以下是使用各種模式的快速摘要:

  • 在開發期間,當您想要使用 熱過載 時,請使用 debug 模式。
  • 當您想要分析效能時,請使用 profile 模式。
  • 當您準備好釋出應用時,請使用 release 模式。

頁面其餘部分將詳細介紹這些模式。

Debug

#

debug 模式下,應用被設定為在物理裝置、模擬器或模擬器上進行除錯。

移動應用的 debug 模式意味著:

  • 斷言已啟用。
  • 服務擴充套件已啟用。
  • 編譯針對快速開發和執行週期進行了最佳化(但未針對執行速度、二進位制檔案大小或部署進行最佳化)。
  • 已啟用除錯,支援原始碼級別除錯的工具(如 DevTools)可以連線到程序。

Web 應用的 debug 模式意味著:

  • 構建經過壓縮,也執行 tree shaking(移除未使用的程式碼)。
  • 應用使用 dartdevc 編譯器進行編譯,以便於除錯。

預設情況下,flutter run 會編譯到 debug 模式。您的 IDE 支援此模式。例如,Android Studio 提供了“Run > Debug...”選單選項,以及專案頁面上帶有小三角形覆蓋的綠色蟲子圖示。

Release

#

使用release 模式來發布應用,此時您需要最大的最佳化和最小的佔用空間。對於移動應用,release 模式(在模擬器或模擬器上不支援)意味著:

  • 斷言已停用。
  • 除錯資訊已被剝離。
  • 除錯已停用。
  • 編譯針對快速啟動、快速執行和小型軟體包大小進行了最佳化。
  • 服務擴充套件已停用。

Web 應用的 release 模式意味著:

  • 構建經過壓縮,並執行了 tree shaking。
  • 應用使用 dart2js 編譯器進行編譯,以獲得最佳效能。

命令 flutter run --release 會編譯到 release 模式。您的 IDE 支援此模式。例如,Android Studio 提供了“Run > Run...”選單選項,以及專案頁面上帶有綠色三角形的執行按鈕圖示。您可以使用 flutter build <target> 為特定目標編譯到 release 模式。有關支援的目標列表,請使用 flutter help build

有關更多資訊,請參閱關於釋出 iOSAndroid 應用的文件。

Profile

#

profile 模式下,會保留一些除錯功能,足以分析應用的效能。Profile 模式在模擬器和模擬器上被停用,因為它們的行為不能代表真實效能。對於移動應用,profile 模式與 release 模式類似,但有以下區別:

  • 一些服務擴充套件,例如啟用效能覆蓋的擴充套件,已啟用。
  • 已啟用跟蹤,支援原始碼級別除錯的工具(如 DevTools)可以連線到程序。

Web 應用的 profile 模式意味著:

  • 構建經過壓縮,但已執行 tree shaking。
  • 應用使用 dart2js 編譯器進行編譯。
  • DevTools 無法連線到以 profile 模式執行的 Flutter Web 應用。使用 Chrome DevTools 生成 Web 應用的時間線事件

您的 IDE 支援此模式。例如,Android Studio 提供了“Run > Profile...”選單選項。命令 flutter run --profile 會編譯到 profile 模式。

有關構建模式的更多資訊,請參閱 Flutter 構建模式