Flutter开发之Dart DevTools

Dart DevTools 简介

Flutter是Google开源的一个跨平台 UI 工具包,可以帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。同时,它也是Google未来的 Google Fuchsia 应用构建的主要方式。目前,Flutter完全开源、免费,拥有宽松的开源协议,适合商业项目。

使用Flutter开发跨平台应用时,经常需要用到一个开发者工具,即Dart DevTools,Dart DevTools是一套用于Dart和Flutter应用开发的性能和调试工具,可以用它来检测和分析应用的性能,以及用它来调试应用日志和进行内存分析等。
Flutter开发之Dart DevTools_第1张图片

目前,Dart DevTools支持的功能有如下一些:

  • 检查和分析应用程序的UI布局和状态。
  • 诊断应用的UI 性能问题。
  • 检测和分析应用程序的CPU使用情况。
  • 分析应用程序的网络使用情况。
  • Flutter或Dart应用程序的源代码级调试。
  • 调试Flutter或Dart应用程序的内存使用情况和分析内存问题。
  • 查看运行的Flutter或Dart应用程序的一般日志和诊断信息。

安装DevTools

使用DevTools之前需要先安装DevTools插件,如果还没有安装,可以先安装它。

Android Studio

默认情况下,只要安装了Flutter开发环境,基本就已经安装了DevTools工具,安装之后运行项目会在DevTools工具栏看到如下图所示的工具集。
Flutter开发之Dart DevTools_第2张图片
具体的调试和分析技巧会在后面讲到。

VS Code

如果使用的是VS Code集成开发环境,那么需要先在VS Code中安装Dart DevTools插件,依次选择【View】→【Command Palette…】打开搜索菜单。在菜单中输入install,并选择Extensions:Install Extension,然后在输入框中输入Dart DevTools点击安装即可,如下图所示。Flutter开发之Dart DevTools_第3张图片

DevTools使用技巧

最近,Google对 Dart DevTools 进行了升级,并发布了最新的版本,对 Dart 和 Flutter 代码调试和性能分析进行了优化。Flutter官方选择以 Web 应用的形式交付 DevTools,这是因为可以轻松地将其集成到我们所有目标平台和 IDE 的现有工具体验中,以 Web 形态构建 DevTools 也能够带来更好的用户体验。

目前,DevTools是一套在浏览器中运行的独立工具,这些工具提供了额外的监测等功能,而这些功能是无法在 IDE 中显示的,之所以这样设计,是因为考虑到跨平台调试的需要。

Flutter Inspector

在上面的调试视图中,第一个标签是 【Flutter Inspector】,这是一款用于可视化和浏览 Flutter Widget 树的工具。您可以选择正在运行的应用中的 Widget,然后放慢所有动画,查看文本基线等等,如下图所示。
Flutter开发之Dart DevTools_第4张图片
在 Flutter Inspector的右边,会发现三个专门用于性能分析的标签页: Timeline (时间线视图)、Memory (内存视图) 和 Performance (性能视图)。当然,Flutter Inspector的功能还有很多,可以自行查看Flutter Inspector官方资料的介绍。

时间线视图 (Timeline view)

时间线视图 (Timeline view) 显示每帧的构建时间以及火焰图。这样,您就能够很容易识别出现问题的帧,同时了解其所在的上下文。
Flutter开发之Dart DevTools_第5张图片
新版本的DevTools新增了 Track Widget Builds (跟踪 widget 构建) 的按钮,它会将您应用中所有 Widget 的构建时间添加到时间线。关于时间线视图 (Timeline view) 的更多介绍可以参考使用时间线视图 (Timeline view)

内存视图 (Memory view)

内存视图 (Memory view)可以让开发者快速的查看应用在特定时刻的内存使用情况,并且此视图现在可以显示所分配内存的热力图,同时也支持跟踪平台内存,还支持内存使用情况的更多筛选。
Flutter开发之Dart DevTools_第6张图片

性能视图 (Performance view)

性能视图 (Performance view) 是传统的 CPU 分析器,可以通过此视图记录应用的运行会话,并查看 CPU 在哪些方法中耗费了大量时间,然后就可以决定应该在哪里进行优化。

Flutter开发之Dart DevTools_第7张图片

使用性能视图 (Performance view)之前,需要先单击 【Record】 开始进行记录 CPU的运行 信息,完成后点击【 Stop】 停止记录,CPU分析器会把收集的信息推送到VM并分别在不同的信息窗口进行展示调用树 (Call Tree, Bottom Up, and Flame Chart),即火焰图。

火焰图表展示的是自上而下的调用堆栈信息,即上面的堆栈帧调用下面的堆栈帧。每一个堆栈帧的宽度代表 CPU 执行的时长。栈帧消耗 CPU 的时间越长,就越有可能是我们进行性能改进的好地方。

同时,我们还可以查看调用树视图,它是一种自上而下展示 CPU 中的调用堆栈信息方法的视图。在下图中的表格中可以看出,展开其中的一个方法可以查看它所有的调用者的信息。

Flutter开发之Dart DevTools_第8张图片

网络视图 (Network view)

网络视图 (Network view)则是用来查看网络流量的,您可以看到您的应用自启动以来全部请求的历史记录,以及每个请求的详细信息。这样,当您试图调试网络问题时,就不必再自行记录这些事件。网络视图目前显示的是 HTTP 流量,未来还会显示通用套接字 (socket) I/O 流量。当应用有网络请求时,就可以在网络视图 (Network view)中查看到请求的信息,和抓包工具显示的信息差不多,如下图所示。
Flutter开发之Dart DevTools_第9张图片

日志视图 (Logging view)

日志视图 (Logging view) 是用来显示应用和框架的事件日志的。默认情况下,日志视图 (Logging view) 会展示以下内容:

  • Dart 运行时的垃圾回收事件。
  • Flutter 框架事件,比如创建帧的事件。
  • 应用的 stdout 和 stderr 输出。
  • 应用的自定义日志事件。

当然,您可以用它轻松过滤消息 (例如,您可以使用 -gc 来过滤掉 Garbage Collector 事件,或者使用 flutter.frame 以仅显示框架事件)。在 Dart 中,日志消息可以结构化,而日志记录视图正是利用了这一点。
Flutter开发之Dart DevTools_第10张图片

目前,DevTools 适用于移动应用、桌面应用以及 Web 应用的调试工作,如果想要了解关于它的更多信息,可以查看官方DevTools开发工具的介绍。

你可能感兴趣的:(flutter,android,ios,devtools)