Flutter 的構建模式
Flutter 工具支援三種編譯模式,以及一種用於測試的無頭模式。您可以根據開發週期的不同階段選擇不同的編譯模式。您是在除錯程式碼嗎?您需要效能分析資訊嗎?您準備好釋出應用了嗎?
以下是使用各種模式的快速摘要:
頁面其餘部分將詳細介紹這些模式。
- 要了解無頭測試模式,請參閱 engine wiki 上關於 Flutter 構建模式 的文件。
- 要了解如何檢測構建模式,請檢視這篇部落格文章:檢查 Flutter 應用中的 Debug/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。
有關更多資訊,請參閱關於釋出 iOS 和 Android 應用的文件。
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 構建模式。