连接多台设备时 scrcpy 报 Multiple ADB devices 怎么选择指定设备
【免费下载链接】scrcpyDisplay and control your Android device项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy
当电脑同时通过 USB 或 TCP/IP 连了多台 Android 设备(或同时连了一台真机和一个模拟器)时,直接运行scrcpy会报错并退出,无法确定要镜像哪台设备:
ERROR: Multiple (2) ADB devices: ERROR: --> (usb) 0123456789abcdef device Nexus_5 ERROR: --> (tcpip) 192.168.1.5:5555 device GM1913 ERROR: Select a device via -s (--serial), -d (--select-usb) or -e (--select-tcpip)(以上为 FAQ.md 中给出的文档示例输出。)这是 scrcpy 的正常保护行为:只有一台设备时会自动选择,多台设备时必须由你显式指定。解决办法就是用-s、-d或-e参数告诉 scrcpy 选哪一台。
先确认每台设备的标识
scrcpy 通过adb发现设备,所以第一步是运行adb devices确认所有设备都能被 adb 正常检测到,并记下各设备的标识。设备标识分两种:
- USB 设备:
adb devices第一列的序列号,例如0123456789abcdef; - TCP/IP 设备:标识是
ip:port形式(与 adb 行为一致),例如192.168.1.5:5555。
如果某台设备在adb devices中状态不是device(例如unauthorized),要先处理设备端的 USB 调试授权弹窗,否则即使指定了序列号也连不上。
用 -s 指定序列号(推荐主路径)
明确知道目标设备的序列号时,用--serial(简写-s)直接指定:
scrcpy -s 0123456789abcdefTCP/IP 设备同样用-s,把序列号换成ip:port:
scrcpy --serial=192.168.1.5:5555这是 doc/connection.md 和 FAQ.md 都给出的做法,适用于任何数量的设备组合(多台 USB、混合连接等),是最通用的方式。
用 -d 或 -e 按连接方式选择
如果同一连接方式下恰好只有一台设备,也可以按连接方式选,而不必记序列号:
scrcpy -d # 选择唯一的 USB 设备(--select-usb) scrcpy -e # 选择唯一的 TCP/IP 设备(--select-tcpip)注意适用条件:USB 侧有多台设备时-d同样会报 "Multiple ADB devices over USB" 错误,TCP/IP 侧同理,此时仍需回到-s指定序列号。
这两个参数是 scrcpy 自己的设备选择器,与 adb 的-d/-e含义相同但只作用于 scrcpy 的启动参数。
用 ANDROID_SERIAL 环境变量(可选分支)
如果习惯少敲参数,也可以像 adb 一样通过环境变量ANDROID_SERIAL指定序列号,之后运行scrcpy时不再需要-s:
# bash export ANDROID_SERIAL=0123456789abcdef scrcpy:: cmd set ANDROID_SERIAL=0123456789abcdef scrcpy# PowerShell $env:ANDROID_SERIAL = '0123456789abcdef' scrcpy该方式来自 doc/connection.md,序列号的取值规则与-s相同(TCP/IP 设备填ip:port)。
验证与边界说明
选对设备后,上述
Multiple ADB devices错误消失,scrcpy 正常启动并镜像目标设备。设备被选中时,scrcpy 还会打印ADB device found:及该设备信息(见 app/src/adb/adb.c),可用于确认选中的是预期那台。设备选择参数最多只能传一个:
--serial (-s)、--select-usb (-d)、--select-tcpip (-e)、--tcpip=<addr>中同时出现多个时,scrcpy 会报 "At most one device selector option may be passed" 并退出(见 app/src/cli.c)。目标设备走 TCP/IP 时,可能出现如下提示:
adb: error: more than one device/emulator ERROR: "adb reverse" returned with value 1 WARN: 'adb reverse' failed, fallback to 'adb forward'据 FAQ.md 说明,这是旧版 Android 上的已知问题,属于预期现象,scrcpy 会自动回退到
adb forward方式继续连接,一般可以正常工作。
避免下次再遇到
如果你经常需要在多台设备间切换,可以在 shell 中把ANDROID_SERIAL设成当前要用的设备序列号(每次切换时重新设置),或固定使用scrcpy -s <序列号>启动。doc/connection.md 中还介绍了配合 AutoAdb 在新设备接入时自动运行autoadb scrcpy -s '{}'的做法,属于可选的进阶方案。
【免费下载链接】scrcpyDisplay and control your Android device项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考