Solución de problemasPublicado: 2 min de lectura

adb error: more than one device/emulator: cómo solucionarlo

Soluciona "adb: error: more than one device/emulator" eligiendo un dispositivo con -s, -d, -e o ANDROID_SERIAL, y quitando conexiones Wi-Fi viejas y emuladores olvidados.

Ejecutas un comando adb y obtienes:

adb: error: more than one device/emulator

adb ve dos o más dispositivos y no sabe a cuál te refieres. La solución es nombrar el dispositivo, o quitar los que no quieres.

Mira qué está conectado

adb devices -l

Ejemplo:

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

Aquí hay un celular por USB, un emulador y un celular por Wi-Fi. Cualquiera de ellos puede ser el que sobra.

Elige un dispositivo para un solo comando

OpciónSignificadoEjemplo
-s <serial>Un dispositivo concreto por su serial o direcciónadb -s R58M123ABC shell
-dEl único dispositivo conectado por USBadb -d install app.apk
-eEl único emuladoradb -e logcat
-t <id>El dispositivo con este transport id (de adb devices -l)adb -t 3 shell

Para un dispositivo por Wi-Fi, el serial es su dirección: adb -s 192.168.1.20:5555 shell.

Elige un dispositivo para toda la terminal

Define ANDROID_SERIAL y todos los comandos adb de esa terminal irán a ese dispositivo:

export ANDROID_SERIAL=R58M123ABC        # macOS / Linux
set ANDROID_SERIAL=R58M123ABC           # Windows Command Prompt
$env:ANDROID_SERIAL = "R58M123ABC"      # Windows PowerShell

Quita los dispositivos que sobran

  • Una conexión Wi-Fi vieja: adb disconnect 192.168.1.20:5555, o adb disconnect para cerrarlas todas.
  • Un emulador que olvidaste: ciérralo en Android Studio, o usa adb -s emulator-5554 emu kill.
  • Una entrada fantasma offline: adb kill-server la elimina.
  • El mismo celular dos veces (una por USB y otra por Wi-Fi): desconecta una de las dos.

Scripts con muchos dispositivos

Para ejecutar el mismo comando en todos los dispositivos conectados, recorre los seriales:

for s in $(adb devices | awk 'NR>1 && $2=="device" {print $1}'); do
  adb -s "$s" shell getprop ro.product.model
done

Más sobre cómo manejar muchos celulares en cómo armar un laboratorio de dispositivos Android.

Varios dispositivos en ADBKit

ADBKit nunca tiene este problema, porque cada dispositivo tiene su propia pestaña. Conecta hasta seis celulares por USB o Wi-Fi, cambia entre ellos como entre pestañas del navegador, y cada acción va al dispositivo que estás viendo. Solo la pestaña visible transmite video, así que las demás quedan livianas. Abre ADBKit y usa + Add device para conectar el siguiente.