adb error: more than one device/emulator 多个设备怎么解决
解决「adb: error: more than one device/emulator」报错:用 -s、-d、-e 或 ANDROID_SERIAL 指定设备,并断开残留的 Wi-Fi 连接和忘记关闭的模拟器,让 adb 命令只发给一台手机。
你运行一条 adb 命令,却得到:
adb: error: more than one device/emulatoradb 看到了两台或更多设备,不知道你指的是哪一台。解决方法是指定设备,或者移除不需要的设备。
查看已连接的设备
adb devices -l示例:
List of devices attached
R58M123ABC device usb:1-1 product:a54xnseea model:SM_A546B
emulator-5554 device product:sdk_gphone64 model:sdk_gphone64_arm64
192.168.1.20:5555 device product:redwood model:2211133G这里有一台 USB 连接的手机、一个模拟器和一台通过 Wi-Fi 连接的手机。其中任何一个都可能是「多出来」的那台。
为单条命令指定设备
| 参数 | 含义 | 示例 |
|---|---|---|
-s <serial> | 按序列号或地址指定某台设备 | adb -s R58M123ABC shell |
-d | 唯一一台通过 USB 连接的设备 | adb -d install app.apk |
-e | 唯一一个模拟器 | adb -e logcat |
-t <id> | 指定 transport id 的设备(来自 adb devices -l) | adb -t 3 shell |
Wi-Fi 设备的序列号就是它的地址:adb -s 192.168.1.20:5555 shell。
为整个终端指定设备
设置 ANDROID_SERIAL 后,这个终端里的所有 adb 命令都会发给该设备:
export ANDROID_SERIAL=R58M123ABC # macOS / Linux
set ANDROID_SERIAL=R58M123ABC # Windows Command Prompt
$env:ANDROID_SERIAL = "R58M123ABC" # Windows PowerShell移除多余的设备
- 旧的 Wi-Fi 连接:
adb disconnect 192.168.1.20:5555,或用adb disconnect断开全部。 - 忘记关闭的模拟器: 在 Android Studio 中关闭,或运行
adb -s emulator-5554 emu kill。 - 残留的 offline 条目:
adb kill-server可以清除。 - 同一台手机出现两次(一次 USB,一次 Wi-Fi):断开其中一个。
多设备脚本
要在每台已连接的设备上运行同一条命令,可以遍历序列号:
for s in $(adb devices | awk 'NR>1 && $2=="device" {print $1}'); do
adb -s "$s" shell getprop ro.product.model
done更多关于同时管理多台手机的内容,见 如何搭建 Android 真机测试实验室。
在 ADBKit 中使用多台设备
ADBKit 不会出现这个问题,因为每台设备都有 自己的标签页。通过 USB 或 Wi-Fi 最多可连接六台手机,像切换浏览器标签页一样在它们之间切换,所有操作都会发给你当前正在查看的设备。只有可见的标签页会传输画面,其他标签页保持轻量。打开 ADBKit,用 + Add device 连接下一台设备。