React Native部署模拟器遇ADB多设备错误:实际仅单设备
解决adb指定设备反向代理时提示“多设备”但实际仅一个设备的问题
我之前也碰到过这个超诡异的adb识别bug!明明adb devices -l只显示一个模拟器,但用adb -s emulator-5554 reverse tcp:8081 tcp:8081时却报错error: more than one device/emulator,给你几个亲测有效的解决办法:
重启adb服务,清除缓存状态
有时候adb会因为后台连接残留或者状态异常导致识别混乱,执行以下命令重置服务:adb kill-server adb start-server重启后再重新执行反向代理命令,大概率能解决问题。
用transport ID替代设备名称指定
从你的adb devices -l输出里能看到设备的transport_id:2,adb的-t参数可以直接用这个ID指定设备,比设备名称更可靠:adb -t 2 reverse tcp:8081 tcp:8081彻底杀掉adb相关进程再重启
如果重启adb服务没用,可能是有后台adb进程没彻底关掉:- Windows:打开任务管理器,找到所有
adb.exe进程,右键结束任务 - Mac/Linux:用
ps aux | grep adb找到进程ID,再用kill -9 <进程ID>杀掉
之后重新启动adb服务,再尝试反向代理。
- Windows:打开任务管理器,找到所有
直接通过React Native命令指定设备启动
既然你是部署React Native应用,也可以跳过手动设置反向代理,直接用命令指定设备启动项目,它会自动处理反向代理:npx react-native run-android --deviceId emulator-5554
这个问题本质上是adb的设备识别缓存bug,明明表面显示设备正常,但内部连接状态有冲突,上面的方法基本能覆盖所有情况。
内容的提问来源于stack exchange,提问作者M1ke




