先确保flutter devices能在终端列出设备,再排查adb未进path、android sdk组件缺失(如cmdline-tools)、usb调试未授权或vscode终端未加载shell配置等问题。

VSCode 里 Flutter 找不到设备,90% 不是插件或 launch.json 的问题,而是 adb 根本没被 flutter 命令看见 —— 先让 flutter devices 在终端里能列出设备,VSCode 才可能选到它。
adb 没进 PATH 或根本没装,flutter devices 就永远为空
VSCode 自己不连设备,它完全依赖 flutter CLI 调用 adb。如果终端里运行 flutter devices 报 No devices found,那 VSCode 必定也看不到。
- 先在 VSCode 内置终端(不是系统终端)里执行
adb version:没输出?说明adb不在 PATH,或者 VSCode 终端压根没加载你的 shell 配置(比如 macOS 的.zshrc) - 检查
echo $PATH输出里有没有platform-tools路径(例如/Users/you/Library/Android/sdk/platform-tools) - Windows 用户注意:PATH 必须加在「系统变量」里,只加用户变量,VSCode GUI 启动时大概率读不到
- Mac 用户更常见的是终端类型错配:VSCode 默认可能跑 bash,但你把 PATH 加在了
.zshrc;可在 VSCode 设置里关掉terminal.integrated.defaultProfile.osx,或直接从命令行用code --new-window启动
真机连上了,adb devices 显示 device,但 flutter devices 仍为空
这说明 adb 可用,但 Flutter 工具链没认全 Android SDK 组件,尤其是 cmdline-tools。
- 运行
flutter doctor -v,重点看「Android toolchain」段:如果报Android SDK cmdline-tools component is missing,哪怕adb能用,Flutter 也会拒绝识别设备 - Android Studio 安装后必须手动打开一次,让它自动下载
cmdline-tools/latest/bin;路径不对会导致flutter doctor卡在「Android license status unknown」 - 确认
$ANDROID_HOME已设且指向 SDK 根目录(如/Users/you/Library/Android/sdk),不是 platform-tools 子目录 - 别用 Android Studio 自带 JDK,统一用官网 JDK 17;
java -version必须输出17.x,JDK 21+ 会静默破坏 Android 构建
VSCode 状态栏显示设备名,但按 F5 调试失败,报类似 Failed to launch browser
这不是浏览器问题,是 VSCode 没真正把设备选进去,或者 launch.json 里硬写了错的 deviceId。
- 底部状态栏点设备名,确保弹出菜单里当前高亮的是你要的目标(如
SM-G998U或emulator-5554),而不是「No device selected」 - 如果列表为空但
adb devices有输出,先执行命令面板里的Flutter: Select Device,它会强制刷新设备缓存 -
launch.json中删掉deviceId字段 —— 除非你在 CI 场景下需要固定某台设备;填错 ID(比如复制了adb devices里 offline 行的序列号)会导致调试器直接拒启 - 模拟器务必等状态栏显示「Online」再操作;刚启动时
adb devices可能短暂显示offline,等 3–5 秒再查
真机已开 USB 调试,但 macOS 上仍不识别
iOS 和 Android 真机在 macOS 上失效逻辑不同,但共性是「信任链中断」。
- Android 机连 Mac 后,手机上是否弹出「允许 USB 调试?」提示?没弹就去开发者选项里关掉再开一次 USB 调试,或换根线重试
- 部分国产机(如小米、华为)要额外开启「USB 调试(安全设置)」,甚至关闭「MIUI 优化」
- iOS 设备连 Mac 后,Xcode → Preferences → Accounts 里必须登录 Apple ID;然后在 Xcode 中打开项目 → Runner → Signing & Capabilities → Team 选该账号,并勾选
Automatically manage signing - iPhone 上进入「设置 → 通用 → 传输或还原 iPhone → 传输到这台 Mac」,首次连接需点「信任此电脑」
最常被跳过的动作是:没在 VSCode 终端里验证 flutter devices 是否真能列出来,就急着改 launch.json 或重装插件。设备可见性是自底向上的链条,adb → android sdk → flutter CLI → VSCode 插件,断在哪一层,就得回哪一层查,不能越级修。











