跳到主內容

Flutter 的構建模式

介紹 Flutter 的構建模式,以及何時應該使用除錯、釋出或效能分析模式。

Flutter 工具在編譯應用程式時支援三種模式,以及一種用於測試的 Headless 模式。你需要根據開發週期所處的階段來選擇編譯模式。你是在除錯程式碼嗎?你需要效能分析資訊嗎?你準備好部署應用了嗎?

以下是何時使用何種模式的簡要總結:

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

除錯 (Debug)

#

除錯模式 (debug mode) 下,應用已針對物理裝置、模擬器或模擬器上的除錯進行了配置。

移動應用的除錯模式意味著:

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

Web 應用的除錯模式意味著:

  • 構建內容進行壓縮(minified),也執行搖樹最佳化(tree shaking)。
  • 應用使用 dartdevc 編譯器進行編譯,以便於除錯。

預設情況下,flutter run 會編譯為除錯模式。你的 IDE 支援此模式。例如,Android Studio 提供 Run > Debug... 選單選項,以及專案頁面上帶有一個小三角形的綠色蟲子圖示。

釋出 (Release)

#

在部署應用時使用 釋出模式 (release mode),以獲得最佳的最佳化效果和最小的安裝包體積。對於移動端,釋出模式(模擬器或模擬器不支援)意味著:

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

Web 應用的釋出模式意味著:

  • 構建內容已壓縮,且已執行搖樹最佳化。
  • 應用使用 dart2js 編譯器進行編譯,以獲得最佳效能。

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

有關詳細資訊,請參閱釋出 iOSAndroid 應用的文件。

效能分析 (Profile)

#

效能分析模式 (profile mode) 下,保留了一定的除錯能力——足以分析應用的效能。效能分析模式在模擬器和模擬器上被停用,因為它們的行為不能代表真實效能。在移動端,效能分析模式類似於釋出模式,區別如下:

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

Web 應用的效能分析模式意味著:

  • 構建內容進行壓縮,但已執行搖樹最佳化。
  • 應用使用 dart2js 編譯器進行編譯。
  • DevTools 無法連線到處於效能分析模式下的 Flutter Web 應用。請使用 Chrome DevTools 為 Web 應用生成時間軸事件 (timeline events)

你的 IDE 支援此模式。例如,Android Studio 提供 Run > Profile... 選單選項。命令 flutter run --profile 可編譯為效能分析模式。

有關構建模式的詳細資訊,請參閱 Flutter 構建模式 (Flutter's build modes)