測量應用程式的大小
許多開發人員關心編譯後的應用程式大小。由於 Flutter 應用程式的 APK、應用程式套件或 IPA 版本是獨立的,並包含執行應用程式所需的所有程式碼和資源,因此其大小可能是一個問題。應用程式越大,在裝置上需要的空間就越多,下載時間就越長,並且可能會超出 Android 即時應用程式等有用功能的限制。
除錯建置不具代表性
#預設情況下,使用 flutter run
啟動應用程式,或按一下 IDE 中的 播放 按鈕(如「試駕」和「編寫您的第一個 Flutter 應用程式」中所用),會產生 Flutter 應用程式的除錯建置。由於除錯開銷允許熱重載和原始碼層級除錯,除錯建置的應用程式大小很大。因此,它並不代表最終使用者下載的生產應用程式。
檢查總大小
#預設的發行建置,例如由 flutter build apk
或 flutter build ios
建立的建置,是為了方便地組裝上傳套件到 Play 商店和 App Store。因此,它們也不代表最終使用者的下載大小。商店通常會重新處理並分割您的上傳套件,以鎖定特定的下載者和下載者的硬體,例如篩選鎖定手機 DPI 的資源,篩選鎖定手機 CPU 架構的原生函式庫。
估算總大小
#若要取得每個平台上最接近的近似大小,請使用下列指示。
Android
#按照 Google Play Console 的指示檢查應用程式的下載和安裝大小。
為您的應用程式產生上傳套件
flutter build appbundle
登入您的 Google Play Console。透過拖放 .aab 檔案上傳您的應用程式二進位檔。
在 Android vitals -> 應用程式大小 分頁中檢視應用程式的下載和安裝大小。
下載大小是根據 arm64-v8a 架構上的 XXXHDPI (~640dpi) 裝置計算的。最終使用者的下載大小可能會因其硬體而異。
頂端分頁有一個切換下載大小和安裝大小的切換開關。該頁面還包含下方更詳細的優化提示。
iOS
#建立 Xcode 應用程式大小報告。
首先,按照「iOS 建立建置封存指示」中所述設定應用程式版本和建置。
然後
- 執行
flutter build ipa --export-method development
。 - 執行
open build/ios/archive/*.xcarchive
以在 Xcode 中開啟封存。 - 按一下 發佈應用程式。
- 選取發佈方法。如果您不打算發佈應用程式,開發是最簡單的方法。
- 在 應用程式精簡 中,選取「所有相容裝置變體」。
- 選取 剝離 Swift 符號。
簽署並匯出 IPA。匯出的目錄包含 App Thinning Size Report.txt
,其中包含有關您的應用程式在不同裝置和 iOS 版本上的預估大小的詳細資訊。
Flutter 1.17 中預設示範應用程式的應用程式大小報告顯示
Variant: Runner-7433FC8E-1DF4-4299-A7E8-E00768671BEB.ipa
Supported variant descriptors: [device: iPhone12,1, os-version: 13.0] and [device: iPhone11,8, os-version: 13.0]
App + On Demand Resources size: 5.4 MB compressed, 13.7 MB uncompressed
App size: 5.4 MB compressed, 13.7 MB uncompressed
On Demand Resources size: Zero KB compressed, Zero KB uncompressed
在此範例中,應用程式在執行 iOS 13.0 的 iPhone12,1(iPhone 11 的 型號 ID / 硬體編號)和 iPhone11,8 (iPhone XR) 上的預估下載大小為 5.4 MB,預估安裝大小為 13.7 MB。
若要精確測量 iOS 應用程式,您必須將發行 IPA 上傳到 Apple 的 App Store Connect(指示)並從那裡取得大小報告。如 Flutter FAQ 中「Flutter 引擎有多大?」一節中所述,IPA 通常比 APK 大。
細分大小
#從 Flutter 1.22 版和 DevTools 0.9.1 版開始,包含了一個大小分析工具,以幫助開發人員瞭解其應用程式發行建置的細分情況。
大小分析工具透過在建置時傳遞 --analyze-size
旗標來調用
flutter build apk --analyze-size
flutter build appbundle --analyze-size
flutter build ios --analyze-size
flutter build linux --analyze-size
flutter build macos --analyze-size
flutter build windows --analyze-size
此建置在兩個方面與標準發行建置不同。
- 該工具以記錄 Dart 套件程式碼大小使用情況的方式編譯 Dart。
- 該工具在終端機中顯示大小細分的概要,並留下一個
*-code-size-analysis_*.json
檔案,以便在 DevTools 中進行更詳細的分析。
除了分析單一建置外,還可以透過將兩個 *-code-size-analysis_*.json
檔案載入 DevTools 來比較兩個建置。請查看 DevTools 文件以取得詳細資訊。
透過摘要,您可以快速瞭解每個類別(例如資源、原生程式碼、Flutter 函式庫等)的大小使用情況。編譯的 Dart 原生函式庫會進一步按套件細分,以進行快速分析。
在 DevTools 中進行更深入的分析
#上述產生的 *-code-size-analysis_*.json
檔案可以在 DevTools 中進行更深入的分析,其中樹狀或樹狀圖視圖可以將應用程式的內容細分為個別檔案層級,以及 Dart AOT 成品的函式層級。
這可以透過 dart devtools
來完成,選取 開啟應用程式大小工具
並上傳 JSON 檔案。
如需使用 DevTools 應用程式大小工具的詳細資訊,請查看 DevTools 文件。
縮減應用程式大小
#在建置應用程式的發行版本時,請考慮使用 --split-debug-info
標籤。此標籤可以大幅減少程式碼大小。如需使用此標籤的範例,請參閱 混淆 Dart 程式碼。
您可以執行的其他一些縮小應用程式大小的操作包括
- 移除未使用的資源
- 盡量減少從函式庫匯入的資源
- 壓縮 PNG 和 JPEG 檔案
除非另有說明,否則本網站上的文件反映的是 Flutter 的最新穩定版本。頁面上次更新時間為 2024-05-08。 檢視原始碼 或 回報問題。