flutter tool debug

Flutter

flutter 开发过程中,少不了会运行一些 flutter 命令 ,比如 flutter build xxx 、 flutter run 等等
看下 bin/flutter 脚本,背后都是 flutter_tool 在执行各种操作。

1
2
3
4
5
6
7
8

FLUTTER_TOOLS_DIR="$FLUTTER_ROOT/packages/flutter_tools"
SNAPSHOT_PATH="$FLUTTER_ROOT/bin/cache/flutter_tools.snapshot"
STAMP_PATH="$FLUTTER_ROOT/bin/cache/flutter_tools.stamp"
SCRIPT_PATH="$FLUTTER_TOOLS_DIR/bin/flutter_tools.dart"
DART_SDK_PATH="$FLUTTER_ROOT/bin/cache/dart-sdk"

"$DART" --packages="$FLUTTER_TOOLS_DIR/.packages" $FLUTTER_TOOL_ARGS "$SNAPSHOT_PATH" "$@"

关于 debug flutter_tool,就不说的了,自行google一下。。

这里记录下 debug 过程中遇到的问题

Exception

指定端口导出FLUTTER_TOOL_ARGS 环境变量

export FLUTTER_TOOL_ARGS="--pause_isolates_on_start --enable-vm-service:65432"

run 起来 会停在这里…

Observatory listening on http://127.0.0.1:65432/ZbWg3veM6kY=/

IDE 中打开flutter tool 项目,配置 dart remote debug

attach 出现以下错误信息

1
2
3
Failed to connect to the VM observatory service: java.io.IOException: Failed to connect: ws://127.0.0.1:65432/ws
Caused by: de.roderick.weberknecht.WebSocketException: error while creating socket to ws://127.0.0.1:65432/ws
Caused by: java.net.ConnectException: Connection refused (Connection refused)

原因 :

http://127.0.0.1:65432/ZbWg3veM6kY=/ 后面多了个ZbWg3veM6kY,这是一种认证码,是为了安全原因,防止应用被远程调试。
可以通过参数–disable-service-auth-codes进行关闭。

export FLUTTER_TOOL_ARGS="--pause_isolates_on_start --enable-vm-service:65432 --disable-service-auth-codes"