能调试需满足三个条件:adb可用、真机已授权、vscode选中设备;缺一即f5无响应。adb version有输出说明路径正确;adb devices显示device状态且手机授权usb调试并勾选“始终允许”;vscode必须手动选择设备,f5启动才进入调试态。

能调试,但必须满足三个硬性条件:adb 可用、真机已授权、VSCode 选中了设备。漏掉任意一个,F5 按下去就静音——既不报错也不启动。
adb version 能跑通,才是真连上了
VSCode 不直接和手机通信,它靠 flutter run 调用 adb 找设备。所以第一步永远是终端里敲:
adb version
有版本号输出(比如 Android Debug Bridge version 1.0.41),说明 adb 在 PATH 里;没反应或 command not found,就得去补路径(通常是 Android/sdk/platform-tools)。
- Windows 用户注意:别只改用户环境变量,系统变量也得加,某些 VSCode 启动方式会忽略用户级 PATH
- macOS/Linux 用户检查
~/.zshrc或~/.bash_profile是否执行了source,改完记得source ~/.zshrc - 运行
adb devices,看到一行带device状态的输出(不是offline或空行),才算物理连接和驱动都 OK
真机要开两层开关,国产机可能还要第三层
「开发者选项」和「USB 调试」只是基础。很多国产机(小米、华为、OPPO)额外卡在:
- 「USB 调试(安全设置)」——小米 MIUI 常见,不开这个,
adb devices显示unauthorized - 「关闭 MIUI 优化」——小米部分机型必须关,否则 USB 调试会自动断开
- 「允许通过 USB 安装应用」——vivo/OPPO 等品牌有时需要手动开启,否则安装 APK 失败
插上线后,手机弹出“允许 USB 调试吗?”对话框,**必须点“允许”并勾选“始终允许”**。只点“允许”一次,下次重连还得再点。
VSCode 底部状态栏不点设备名,F5 就是摆设
哪怕只连了一台手机,VSCode 也不会自动选它。你必须手动点右下角那个写着设备名(如 SM-G998U)或 No device selected 的区域,从弹出菜单里选中目标设备。
- 如果菜单里为空,但
adb devices能看见设备:先按Ctrl+Shift+P(Win/macOS)唤出命令面板,输入并执行Flutter: Select Device,强制刷新列表 - 如果仍为空,重启 VSCode 或执行
Developer: Reload Window -
launch.json里别写死deviceId字段——除非你在 CI 场景固定某台设备;填错(比如复制了adb devices输出里的 offline 行)会导致Failed to launch browser这类误导性错误
F5 启动才进调试态,绿色 ▶️ 按钮只是 flutter run
右上角绿色三角形按钮默认执行 flutter run,它不挂调试器、不支持断点、热重载只能靠快捷键(Ctrl+S 或托盘图标),但无法查看变量或调用栈。
- 务必用
F5或菜单Run → Start Debugging - 成功进入调试态后,左下角状态栏会显示
Debug文字,设备名旁有个小虫子图标? - 如果 F5 按下后几秒就退出,且控制台无日志:大概率是旧版 Dart Code 插件冲突,卸载 Flutter 和 Dart 插件,重启 VSCode,重新安装最新版
最常被忽略的一点:调试过程依赖设备上正在运行的 Flutter engine 实例,而这个实例只在 F5 启动时加载。所以别指望先点 ▶️ 再按 F5 —— 那只是重复启动,不会进入调试上下文。











