Skip to main content

性能常见问题

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

  • 如何判断我的Flutter应用中哪些widget在每一帧中都被重建?
    • widgets/debug.dart中将debugProfileBuildsEnabled设置为true。
    • 或者,更改widgets/framework.dart中的performRebuild函数以忽略debugProfileBuildsEnabled并始终调用Timeline.startSync(...)/finish
    • 如果你使用IntelliJ,则可以使用此数据的GUI视图。选择跟踪widget重建,你的IDE将显示哪些widget进行了重建。
  • 如何解决我的应用由于代价高昂的Dart异步函数调用阻塞UI线程而导致的动画效果差的问题?
  • 如何截取正在运行的应用程序的屏幕截图并将其导出为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中执行跟踪?