跳到主内容

性能常见问题

Flutter 性能常见问题解答

此页面收集了一些关于评估和调试 Flutter 性能的常见问题解答。

  • 我的 Flutter 应用看起来卡顿或断断续续。我该如何修复?
  • 如何确定我的 Flutter 应用在每一帧中重建了哪些小部件?
    • widgets/debug.dart 中将 debugProfileBuildsEnabled 设置为 true。
    • 或者,更改 widgets/framework.dart 中的 performRebuild 函数,使其忽略 debugProfileBuildsEnabled 并始终调用 Timeline.startSync(...)/finish
    • 如果您使用 IntelliJ,则可以使用 GUI 视图查看此数据。选择 跟踪小部件重建,您的 IDE 将显示哪些小部件被重建。
  • 如何解决我的应用因耗时的 Dart 异步函数调用阻塞 UI 线程而导致的动画效果不佳的问题?
  • 如何确定我的 Flutter 应用的包大小(用户将下载的大小)?
  • 如何截取正在运行的应用的屏幕截图并将其导出为 SKP 文件?
    • 运行 flutter screenshot --type=skia --observatory-uri=...
    • 请注意屏幕截图的一个已知问题
    • 要分析和可视化 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>
      
  • 如何执行 Fuchsia 中的跟踪?