Flutter Android 无线调试故障处理
场景
Android Studio 可以识别无线调试手机,但命令行执行 flutter run 或 flutter devices 时提示:
text
No supported devices connected
或者手机显示为:
text
unsupported • Android null (API null) (unsupported)
adb.exe: device 'adb-xxxx' not found
原因
无线调试通过 mDNS 暴露设备时,ADB 可能显示类似这样的 serial:
text
adb-AKJEVB5920011350-n1wAVi (2)._adb-tls-connect._tcp
Flutter 命令行有时会把这个 mDNS serial 截断成 adb-AKJEVB5920011350-n1wAVi,然后再调用 adb -s 读取设备属性,于是 ADB 找不到这个设备。Android Studio 能识别,不代表 Flutter CLI 一定能正确解析这个 mDNS 名称。
固定处理流程
先查看 ADB 发现的无线调试服务:
powershell
adb mdns services
找到输出里的真实 ip:port,例如:
text
adb-xxxxx _adb-tls-connect._tcp 192.168.0.192:45541
用 ip:port 手动连接:
powershell
adb connect 192.168.0.192:45541
确认 Flutter 已识别为 Android 设备:
powershell
flutter devices
正常时应看到类似:
text
BKQ AN00 (mobile) • 192.168.0.192:45541 • android-arm64 • Android 16 (API 36)
运行时显式指定这个设备:
powershell
flutter run -d 192.168.0.192:45541
注意事项
无线调试端口可能每次重连都会变化。下次再次出现 No supported devices connected 时,不需要改项目代码,重复:
powershell
adb mdns services
adb connect <ip:port>
flutter run -d <ip:port>
如果存在同一台手机的两个连接,一个是 mDNS 名称,一个是 ip:port,优先使用 ip:port。
本机示例
曾遇到的设备:
text
BKQ AN00
mDNS serial: adb-AKJEVB5920011350-n1wAVi (2)._adb-tls-connect._tcp
ip:port: 192.168.0.192:45541