效能常見問題
關於 Flutter 效能的常見問題解答
本頁面收集了一些關於評估和除錯 Flutter 效能的常見問題。
- 哪些效能儀表板包含與 Flutter 相關的指標?
- 如何為 Flutter 新增基準測試?
- 有哪些用於捕獲和分析效能指標的工具?
- 我的 Flutter 應用看起來有卡頓或掉幀現象。該如何解決?
- 有哪些需要謹慎使用的耗效能操作?
Opacity、Clip.antiAliasWithSaveLayer,或任何會觸發saveLayer的操作ImageFilter- 另請參閱 效能最佳實踐
- 如何判斷 Flutter 應用中哪些 widget 在每一幀中被重建?
- 在 widgets/debug.dart 中將
debugProfileBuildsEnabled設定為 true。 - 或者,修改 widgets/framework.dart 中的
performRebuild函式,忽略debugProfileBuildsEnabled並始終呼叫Timeline.startSync(...)/finish。 - 如果你使用 IntelliJ,可以使用該資料的圖形化檢視。選擇 Track widget rebuilds(追蹤 widget 重建),你的 IDE 就會顯示哪些 widget 進行了重建。
- 在 widgets/debug.dart 中將
- 如何查詢(顯示器的)目標幀率?
- 如何解決因昂貴的 Dart 非同步函式呼叫阻塞 UI 執行緒而導致的糟糕動畫效果?
- 使用
compute()方法生成另一個 isolate,如 在後臺解析 JSON 食譜中所述。
- 使用
- 如何確定使用者下載的 Flutter 應用安裝包大小?
- 請參閱 測量應用大小
- 如何檢視 Flutter 引擎的大小構成?
- 訪問 二進位制大小儀表板,並將 URL 中的 git 雜湊值替換為 Flutter GitHub 提交記錄 中的最新提交雜湊值。
- 如何擷取正在執行的應用螢幕截圖並將其匯出為 SKP 檔案?
- 執行
flutter screenshot --type=skia --observatory-uri=... - 注意檢視截圖的一個已知問題
- Issue 21237:無法在真實裝置上錄製影像。
- 要分析和視覺化 SKP 檔案,請檢視 Skia WASM 偵錯程式。
- 執行
-
如何從裝置中檢索著色器持久化快取?
- 在 Android 上,你可以執行以下操作
adb shell run-as <com.your_app_package_name> cp <your_folder> <some_public_folder, e.g., /sdcard> -r adb pull <some_public_folder/your_folder>
- 在 Android 上,你可以執行以下操作
-
如何在 Fuchsia 中執行跟蹤(trace)?
- 請參閱 Fuchsia 跟蹤指南