Решение проблемОпубликовано: 2 мин чтения

adb error: more than one device/emulator: как исправить

Как исправить «adb: error: more than one device/emulator»: выбрать устройство через -s, -d, -e или ANDROID_SERIAL и убрать старые Wi-Fi-подключения и забытые эмуляторы.

Вы запускаете команду adb и получаете:

adb: error: more than one device/emulator

adb видит два устройства или больше и не знает, какое вы имеете в виду. Решение простое: укажите устройство явно или уберите лишние.

Посмотрите, что подключено

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Единственное устройство, подключённое по USBadb -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, чтобы подключить следующее устройство.