Flutter 的建構模式選擇
Flutter 支援三種模式編譯 app,也支援使用 headless 模式來測試。這篇文件解釋了這三種模式,並且告訴你什麼時候應該使用哪種模式。關於 headless 測試的更多資訊,可以檢視 單元測試。
選擇哪種編譯模式取決於你處於哪個開發週期中。是除錯程式碼階段,還是需要效能最佳化分析,抑或是準備部署你的應用了呢?
快速簡要介紹下列三種建構模式:
下文詳細解釋了每種模式以及何時使用它,獲得更多資訊,或者瞭解無頭模式的測試,請參考 Flutter wiki 文件。
除錯模式
在 Debug 模式下,app 可以被安裝在物理裝置、模擬器或者模擬器上進行除錯。
Debug 模式意味著:
在 Web 平臺下的除錯模式意味著:
-
本次建構 沒有 最小化資源並且整個建構 沒有 最佳化效能。
-
為了簡化除錯,這個 Web 應用使用了 dartdevc 編譯器。
預設情況下,執行 flutter run
會使用 Debug 模式。你的 IDE 也支援這些模式。例如,Android Studio 提供了 Run > Debug… 選單選項,而且在專案面板中還有一個三角形的綠色執行按鈕圖示(選單選項中會顯示相應圖示的圖片)。
Release 模式
當你想要最大的最佳化以及最小的佔用空間時,就使用 Release 模式來部署 app 吧。 release 模式是不支援模擬器或者模擬器的,使用 Release 模式意味著:
-
斷點是不可用的。
-
除錯資訊是不可見的。
-
除錯是禁用的。
-
編譯針對快速啟動、快速執行和小的 package 的大小進行了最佳化。
-
服務擴充是禁用的。
在 Web 平台的 Release 模式意味著:
-
這次建構資源已經被壓縮,並且效能得以最佳化。
-
這個 Web 應用透過 dart2js 編譯器建構,以確保更優秀的效能。
flutter run --release
命令會使用 Release 模式來進行編譯。你的 IDE 同樣也支援這個模式。例如,Android Studio 提供了 Run > Run… 選單選項,而且在專案面板中還有一個被小三角覆蓋的綠色蟲子圖示。(選單選項中會顯示相應圖示的圖片)
你可以使用 flutter build <target>
針對特定目標編譯 release 模式。請使用 flutter help build
檢視支援的目標列表。
你也可以透過 flutter build --release
命令來使用 release 模式。
你也可以執行 flutter build
命令使用 Release 模式來編譯。更多詳細資訊,可以參閱釋出 iOS 和 Android app 的文件。
Profile 模式
在 profile 模式下,一些除錯能力是被保留的—足夠分析你的 app 效能。在模擬器和模擬器上,Profile 模式是不可用的,因為他們的行為不能代表真實的效能。 profile 模式和 release 類似,但有以下不同:
-
一些服務擴充是啟用的。例如,支援 performance overlay。
-
Tracing 是啟用的,一些除錯工具,比如 開發者工具 可以連線到處理序裡。
在 Web 平台的 Profile 模式意味著:
-
資原始檔沒有被壓縮,但是整體效能已經最佳化
-
這個 Web 應用透過 dart2js 編譯器建構
flutter run --profile
命令是使用 Profile 模式來編譯的。你的 IDE 也是支援這個模式的。例如,Android Studio 提供了 Run > Profile… 選單選項。
關於這些模式的更多資訊,可以檢視 Flutter wiki 中的 Flutter’s build modes 文件。