1、确认flutter安装的目录
安装完flutter 环境后,比如我的flutter放在目录下面:/opt/fvm/current/
2、flutter命令就是由shell脚本,驱动调用dart命令flutter_tools.snapshot
flutter doctor -v
huchu58:2.2.0 huchu$ which flutter
/opt/fvm/current/bin/flutter
可以看到 flutter是 flutter 安装目录下的一个shell 脚本
/opt/fvm/current/bin/flutter
内部又会调用$BIN_DIR/internal/shared.sh
这里面又会调用到/opt/fvm/versions/2.2.0/bin/cache/dart-sdk/bin
dart 下面的pub
和 dart
调用dart主要是为了编译flutter_tools下面的/opt/fvm/versions/2.2.0/packages/flutter_tools/lib
dart代码。
输出结果到flutter_tools.snapshot
/opt/fvm/versions/2.2.0/bin/cache/flutter_tools.snapshot
3、修改/packages/flutter_tools/lib dart代码,重新构建flutter
删除/bin/cache/flutter_tools.snapshot
,重新执行flutter 命令,会自动重新构建flutter_tools.snapshot
flutter命令行工具的实现,可以从这里一一对应到dart源代码:
/packages/flutter_tools/bin/flutter_tools.dart
4、重新测试修改的flutter_tools dart代码
cd 到/packages/flutter_tools
cd /opt/fvm/versions/2.2.0/packages/flutter_tools
执行命令
../../bin/cache/dart-sdk/bin/pub run test

5、启用flutter调试模式
修改/opt/fvm/versions/2.2.0/bin/internal/shared.sh
取消注释FLUTTER_TOOL_ARGS:
# To debug the tool, you can uncomment the following lines to enable checked
# mode and set an observatory port:
FLUTTER_TOOL_ARGS="--enable-asserts $FLUTTER_TOOL_ARGS"
FLUTTER_TOOL_ARGS="$FLUTTER_TOOL_ARGS --observe=65432"
以后只要执行到flutter相关命令的时候,就会是调试模式,比如flutter run --debug 时候会多出一些输出:
Observatory listening on http://127.0.0.1:65432/FAoW9rKkWSU=/
打开页面:

网友评论