You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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服务,再尝试反向代理。
  • 直接通过React Native命令指定设备启动
    既然你是部署React Native应用,也可以跳过手动设置反向代理,直接用命令指定设备启动项目,它会自动处理反向代理:

    npx react-native run-android --deviceId emulator-5554
    

这个问题本质上是adb的设备识别缓存bug,明明表面显示设备正常,但内部连接状态有冲突,上面的方法基本能覆盖所有情况。

内容的提问来源于stack exchange,提问作者M1ke

火山引擎 最新活动