Flutter - 命令行工具源码调试环境搭建

文章目录

  • 前言
  • 开发环境
  • 环境搭建
  • 运行测试
  • 调试测试
  • 最后


前言

开发Flutter项目时难免会遇到各种问题,源码调试对于问题的解决不可或缺。

对于Flutter框架项目的源码调试,如果是Flutter核心库调试,只需要创建一个Flutter项目并在项目中使用需要调试的库就能找到源码打断点调试,甚至你可以直接修改源码,重新运行后改动即可生效;如果是Flutter命令行工具调试,没有核心库调试那么简单,需要调试的情况也少,不过还是在这里完整记录一下,希望能对你有所帮助。

开发环境

  • Flutter: 3.10.2
  • Dart: 3.0.2

环境搭建

首先使用Git工具拉取最新的Flutter框架项目代码:

git clone https://github.com/flutter/flutter.git

如果你不想拉取也行,电脑已有的Flutter SDK其实就是Flutter框架项目,是可以直接用的,不过建议拉取新的项目代码,避免破坏稳定的开发环境。

拉取成功后,如果想和本地Flutter SDK的版本保持一致,在项目根目录路径下执行命令切换:

git checkout [版本名称]

注意,后续所有命令皆在项目根目录路径下执行。

接着使用Android Studio打开项目,这时还不急着配置Flutter SDK路径,不然会提示The Flutter SD installation is incomplete

screenshot1

先执行命令:

bin/flutter

Flutter会自动下载Dart SDK并构建命令行工具。执行完成后,Flutter SDK路径配置为当前项目路径:

Flutter - 命令行工具源码调试环境搭建_第1张图片

Dart SDK路径配置为当前项目下的bin/cache/dart-sdk路径,同时要开启Enable Dart support for the project 'flutter'

Flutter - 命令行工具源码调试环境搭建_第2张图片

配置完毕,你会发现项目一堆报错,这时flutter update-packages命令就派上用场了,执行命令获取所需要的全部依赖项:

bin/flutter update-packages

执行成功后,项目不再报错。到此,调试环境基本搭建完成!

运行测试

Flutter命令行工具的执行入口位于packages/flutter_tools/bin/flutter_tools.dart文件,平时开发执行的flutter doctorflutter build等等命令都会执行到这边。

现在我们可以通过dart命令尝试运行flutter_tools.dart执行Flutter命令:

bin/dart packages/flutter_tools/bin/flutter_tools.dart doctor

可能有人会有疑问,前面bin/flutter不也可以执行Flutter命令,为什么还要执行flutter_tools.dart呢?

这是因为bin/flutter最终是执行到了bin/cache/flutter_tools.snapshot快照文件,更详细的一些分析,可以参考这篇文章Flutter问题记录 - Unable to find bundled Java version。如果你想要你的源码改动生效,就必须重新构建新的快照文件(可以通过手动删除flutter_tools.snapshot文件强制重新构建),同时也不好调试。

如果你遇到类似这样的报错:

Error: The specified language version is too high. The highest supported language version is xxx.

这是Dart SDK版本太低导致的,请使用bin/dart命令,最终使用的是bin/cache/dart-sdk目录下的Dart SDK。

除了以上方法,还可以借助Android Studio运行。当然,直接像这样运行是没办法执行指定Flutter命令的:

Flutter - 命令行工具源码调试环境搭建_第3张图片

需要配置具体的命令参数:

Flutter - 命令行工具源码调试环境搭建_第4张图片

例如flutter doctor命令这样配置:

Flutter - 命令行工具源码调试环境搭建_第5张图片

配置后再次运行就好啦,其实本质还是运行前面方法中的命令。

调试测试

通过Android Studio调试很简单,配置好需要调试的命令参数后像平时一样打断点调试即可:

Flutter - 命令行工具源码调试环境搭建_第6张图片

当然,也可以通过bin/dart命令调试:

bin/dart --pause-isolates-on-start --observe packages/flutter_tools/bin/flutter_tools.dart doctor

执行输出:

The Dart VM service is listening on http://127.0.0.1:8181/etUQnsnEyTE=/
The Dart DevTools debugger and profiler is available at: http://127.0.0.1:8181/etUQnsnEyTE=/devtools?uri=ws://127.0.0.1:8181/etUQnsnEyTE=/ws
vm-service: isolate(2029164948512007) 'main' has no debugger attached and is paused at start.  Connect to the Dart VM service at http://127.0.0.1:8181/etUQnsnEyTE=/ to debug.

用浏览器打开链接调试:

Flutter - 命令行工具源码调试环境搭建_第7张图片

如果要终止调试命令,可以使用快捷键Control + C

参考文档:

  • Dart DevTools

最后

如果这篇文章对你有所帮助,请不要吝啬你的点赞加星,谢谢~

你可能感兴趣的:(开发记录,flutter)