跳至主要內容

Flutter 的建置模式

Flutter 工具在編譯應用程式時支援三種模式,以及用於測試的無頭模式。您會根據開發週期的位置選擇編譯模式。您是否正在偵錯程式碼?您是否需要分析資訊?您是否已準備好部署應用程式?

以下是關於何時使用哪種模式的快速摘要

  • 當您想要使用熱重載時,請在開發期間使用偵錯模式。
  • 當您想分析效能時,請使用效能分析模式。
  • 當您準備發佈應用程式時,請使用發佈模式。

本頁的其餘部分詳細說明這些模式。

偵錯

#

除錯模式中,應用程式會設定為在實體裝置、模擬器或模擬器上進行除錯。

行動應用程式的除錯模式表示:

  • 斷言已啟用。
  • 服務擴充功能已啟用。
  • 編譯已針對快速開發和執行週期進行最佳化(但不是針對執行速度、二進位檔大小或部署)。
  • 已啟用除錯,且支援原始碼層級除錯的工具(例如DevTools)可以連線至該程序。

Web 應用程式的除錯模式表示:

  • 建置並未縮減,且執行樹狀結構搖晃(tree shaking)。
  • 應用程式會使用 dartdevc 編譯器進行編譯,以方便除錯。

預設情況下,flutter run 會編譯為除錯模式。您的 IDE 支援此模式。例如,Android Studio 提供 執行 > 除錯... 選單選項,以及專案頁面上覆蓋著小三角形的綠色錯誤圖示。

發行

#

當您想要最大程度的最佳化和最小的足跡大小時,請使用發佈模式來部署應用程式。對於行動裝置,發佈模式(模擬器或模擬器不支援此模式)表示:

  • 斷言已停用。
  • 除錯資訊已移除。
  • 除錯已停用。
  • 編譯已針對快速啟動、快速執行和小套件大小進行最佳化。
  • 服務擴充功能已停用。

Web 應用程式的發佈模式表示:

  • 建置已縮減,且已執行樹狀結構搖晃(tree shaking)。
  • 應用程式會使用 dart2js 編譯器進行編譯,以獲得最佳效能。

指令 flutter run --release 會編譯為發佈模式。您的 IDE 支援此模式。例如,Android Studio 提供 執行 > 執行... 選單選項,以及專案頁面上的三角形綠色執行按鈕圖示。您可以使用 flutter build <target> 編譯為特定目標的發佈模式。如需支援的目標清單,請使用 flutter help build

如需更多資訊,請參閱關於發佈iOSAndroid應用程式的文件。

分析

#

效能分析模式中,會保留一些除錯功能,足以分析應用程式的效能。效能分析模式在模擬器和模擬器上已停用,因為它們的行為無法代表實際效能。在行動裝置上,效能分析模式與發佈模式類似,但有以下差異:

  • 某些服務擴充功能(例如啟用效能覆蓋圖的擴充功能)已啟用。
  • 已啟用追蹤,且支援原始碼層級除錯的工具(例如DevTools)可以連線至該程序。

Web 應用程式的效能分析模式表示:

  • 建置並未縮減,但已執行樹狀結構搖晃(tree shaking)。
  • 應用程式會使用 dart2js 編譯器進行編譯。
  • DevTools 無法連線至在效能分析模式下執行的 Flutter Web 應用程式。請使用 Chrome DevTools 為 Web 應用程式產生時間軸事件

您的 IDE 支援此模式。例如,Android Studio 提供 執行 > 效能分析... 選單選項。指令 flutter run --profile 會編譯為效能分析模式。

如需有關建置模式的更多資訊,請參閱Flutter 的建置模式