性能常见问题和回答
本篇收集了一些关于评估和调试 Flutter 性能的常见问题。
-
哪些性能仪表盘有 Flutter 相关的指标?
-
我如何向 Flutter 添加一个基准测试?
-
有哪些捕捉和分析性能指标的工具?
-
我的 Flutter 应用程序很卡顿,性能很糟糕。怎么样才能修复这些问题?
-
有哪些特别消耗性能的操作是我需要注意的?
Opacity、Clip.antiAliasWithSaveLayer或任何能触发saveLayer的操作。查阅 性能优化最佳实践
-
我如何才能知道 Flutter 应用程序中哪些 widget 在哪一帧中被重新构建?
将 widgets/debug.dart 中的
debugProfileBuildsEnabled设置为 true。或者,改变 widgets/framework.dart 中的
performRebuild函数,忽略debugProfileBuildsEnabled,并始终调用Timeline.startSync(...)/finish。如果你使用 IntelliJ,就可以看见这些数据的视图。在 IntelliJ 的 Flutter Performance 工具中勾选 Track widget rebuilds,你就能在 IDE 中直观地看见哪些 widget 进行了重建。
-
我如何查询显示器的刷新率?
-
如何解决我的应用程序因高消耗的 Dart 异步函数调用阻塞了 UI 线程,而导致动画效果不佳?
使用
compute()方法生成另一个 isolate,例如 在后台处理 JSON 数据解析 实用教程 (Cookbook) 中所演示的。
-
我如何确定用户下载的 Flutter 应用程序包的体积?
请查阅 测量你的应用体积
-
我如何才能看到 Flutter engine 内架构细分的体积?
访问 binary size dashboard,用 GitHub 上 Flutter 仓库 最近提交的 hash 值替换 URL 中的 hash 值。
-
我如何才能对正在运行的应用程序进行截图,并将其导出 SKP 文件?
运行
flutter screenshot --type=skia --observatory-uri=...命令注意,一个查看截图的已知问题:
Issue 21237: 无法在真机中截图。
分析和可视化 SKP 文件,请使用 Skia WASM debugger。
-
如何从设备上读取着色器持久化缓存?
在 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>
-
我如何在 Fuchsia 中进行追踪?
请查阅 Fuchsia 追踪指南
除非另有说明,本文档之所提及适用于 Flutter 3.38.1 版本。本页面最后更新时间:2025-1-17。查看文档源码 或者 为本页面内容提出建议。