Solução de problemasPublicado em: 2 min de leitura

adb error: more than one device/emulator: como resolver

Resolva "adb: error: more than one device/emulator" escolhendo um dispositivo com -s, -d, -e ou ANDROID_SERIAL e removendo conexões Wi-Fi antigas e emuladores esquecidos.

Você roda um comando adb e recebe:

adb: error: more than one device/emulator

O adb enxerga dois ou mais dispositivos e não sabe de qual você está falando. A solução é dizer qual é o dispositivo, ou remover os que você não quer.

Veja o que está conectado

adb devices -l

Exemplo:

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

Aqui há um celular pelo USB, um emulador e um celular pelo Wi-Fi. Qualquer um deles pode ser o que está sobrando.

Escolha um dispositivo para um comando

OpçãoSignificadoExemplo
-s <serial>Um dispositivo específico pelo serial ou endereçoadb -s R58M123ABC shell
-dO único dispositivo conectado por USBadb -d install app.apk
-eO único emuladoradb -e logcat
-t <id>O dispositivo com este transport id (do adb devices -l)adb -t 3 shell

Para um dispositivo no Wi-Fi, o serial é o endereço: adb -s 192.168.1.20:5555 shell.

Escolha um dispositivo para o terminal inteiro

Defina ANDROID_SERIAL e todos os comandos adb daquele terminal vão para esse dispositivo:

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

Remova os dispositivos que sobram

  • Uma conexão Wi-Fi antiga: adb disconnect 192.168.1.20:5555, ou adb disconnect para derrubar todas.
  • Um emulador esquecido: feche no Android Studio, ou rode adb -s emulator-5554 emu kill.
  • Uma entrada fantasma offline: adb kill-server limpa.
  • O mesmo celular duas vezes (uma pelo USB, outra pelo Wi-Fi): desconecte uma delas.

Scripts com muitos dispositivos

Para rodar o mesmo comando em todos os dispositivos conectados, faça um loop pelos seriais:

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

Mais sobre como trabalhar com muitos celulares em como montar um laboratório de dispositivos Android.

Vários dispositivos no ADBKit

O ADBKit nunca tem esse problema, porque cada dispositivo ganha a própria aba. Conecte até seis celulares por USB ou Wi-Fi, alterne entre eles como abas do navegador, e cada ação vai para o dispositivo que você está vendo. Só a aba visível transmite vídeo, então as outras ficam leves. Abra o ADBKit e use + Add device para conectar o próximo.