Ошибка «more than one device/emulator» в ADB: как исправить

Ошибка error: more than one device/emulator появляется в терминале при выполнении команды adb, когда к компьютеру одновременно подключено несколько Android-устройств или запущено несколько эмуляторов. Утилита ADB не может сама определить, к какому именно устройству относится команда, и прерывает выполнение, чтобы не отправить её не туда.

Проблема не является сбоем системы или признаком неисправности — это штатное защитное поведение ADB. Даже если физически подключён только один смартфон, ошибка всё равно может возникать: причиной становятся «фантомные» устройства, зависшие процессы сервера ADB, эмуляторы, работающие в фоне, или сетевые подключения через adb connect, о которых пользователь забыл.

Ниже разберём, как быстро найти лишние устройства, направить команду на нужное из них и устранить коренные причины ошибки.

Почему ADB выдаёт ошибку «more than one device/emulator»

Команды вроде adb install, adb push или adb shell по умолчанию работают в режиме «одно устройство». Когда сервер ADB видит два и более подключения — физических, эмулированных или сетевых — он отказывается выбирать самостоятельно. Это сделано намеренно: случайная установка приложения не на тот аппарат могла бы привести к неприятным последствиям.

Типичные источники «лишних» устройств:

  • 🔌 Подключено два и более смартфона или планшета по USB одновременно
  • 🖥️ Запущен эмулятор из Android Studio, BlueStacks, LDPlayer или другой среды
  • 📡 Активно сетевое подключение, созданное ранее через adb connect
  • 👻 «Зависшее» устройство в статусе offline после некорректного отключения кабеля
  • 🔄 Дублирующиеся записи одного и того же аппарата из-за сбоя драйвера

Шаг 1. Смотрим список подключённых устройств

Первая диагностическая проверка — вывести все устройства, которые видит сервер ADB. Для этого выполните в терминале:

adb devices

В ответ вы получите список вида: серийный номер (или адрес эмулятора) и статус. Обратите внимание на количество строк — даже одна неожиданная запись объясняет ошибку. Статус device означает нормальное подключение, offline — устройство «зависло», unauthorized — на смартфоне не подтверждена отладка по USB.

Статус в adb devicesЧто означаетЧто делать
deviceУстройство подключено и готовоРаботать дальше, указывая серийник
offlineСвязь потеряна, запись «зависла»Перезапустить adb-сервер
unauthorizedНет подтверждения отладкиРазрешить отладку на экране устройства
no permissionsНет прав доступа (чаще Linux)Настроить udev-правила или права

Если в списке присутствуют записи вида emulator-5554, а эмулятор вы вроде бы закрыли — процесс мог остаться в фоне. Проверьте диспетчер задач на предмет процессов эмулятора.

Шаг 2. Указываем конкретное устройство в команде

Самый быстрый способ обойти ошибку — явно сказать ADB, с каким устройством работать. Для этого используется флаг -s с серийным номером из вывода adb devices:

adb -s XXXXXXXX install app.apk

Вместо XXXXXXXX подставьте идентификатор нужного аппарата. Такой подход не требует отключать остальные устройства и безопасен: команда гарантированно уйдёт туда, куда нужно.

⚠️ Внимание: не путайте флаги -d (единственное USB-устройство) и -e (единственный эмулятор). Если подключений несколько в обеих категориях, эти флаги тоже выдадут ошибку — надёжнее использовать -s с конкретным серийным номером.

Есть и альтернатива: задать устройство по умолчанию через переменную окружения ANDROID_SERIAL. После её установки все команды ADB в текущей сессии терминала будут направляться на указанный аппарат без флага -s.

Шаг 3. Убираем «фантомные» и зависшие подключения

Если лишнее устройство в списке — «призрак» со статусом offline, помогает перезапуск сервера ADB. Выполните последовательно:

adb kill-server

adb start-server

adb devices

После перезапуска список очищается, и устройства определяются заново. На смартфоне может снова появиться запрос на разрешение отладки по USB — подтвердите его, при желании отметив пункт запоминания компьютера.

Для сетевых подключений, созданных через adb connect, есть отдельная команда отключения:

adb disconnect

Без аргументов она разрывает все TCP/IP-подключения, с указанием адреса — только конкретное. Это частая причина ошибки у тех, кто тестирует приложения по Wi-Fi и забывает отключиться.

☑️ Порядок устранения ошибки

Выполнено: 0 / 6

Особые случаи: эмуляторы и дубли записей

Среды разработки и сторонние эмуляторы нередко держат свои процессы в фоне даже после закрытия окна. Android Studio может оставить запущенным AVD, а эмуляторы вроде BlueStacks работают как служба. Если запись emulator-5554 не исчезает, завершите соответствующий процесс через диспетчер задач или штатными средствами самого эмулятора.

Другой сценарий — одно и то же устройство отображается дважды. Возможная причина — конфликт драйверов или одновременное подключение по USB и по сети. Проверьте: если серийный номер дублируется с разными статусами, отключите кабель, выполните adb kill-server, подключите заново и подтвердите отладку.

📊 Где вы столкнулись с ошибкой «more than one device/emulator»?
При работе с Android Studio
При использовании стороннего эмулятора (BlueStacks и т.п.)
При подключении нескольких телефонов по USB
При отладке по Wi-Fi (adb connect)
⚠️ Внимание: не завершайте незнакомые процессы в диспетчере задач «наугад». Завершайте только те, что относятся к эмуляторам или ADB, — иначе можно прервать работу нужных программ.
Как работать с несколькими устройствами постоянно

Если вы регулярно тестируете на нескольких аппаратах, удобно создать ярлыки или скрипты с заранее прописанным флагом -s и серийным номером каждого устройства. Также многие IDE позволяют выбирать целевое устройство в интерфейсе, не прибегая к ручным командам. Серийный номер можно посмотреть и в настройках смартфона в разделе «О телефоне», чтобы сопоставить записи из adb devices с реальными аппаратами.

Что делать, если ошибка остаётся

Когда список adb devices показывает только одно устройство, а ошибка продолжает появляться, возможные причины глубже. Проверьте, не запущено ли несколько экземпляров самого сервера ADB — например, один из комплекта Android SDK, а другой из поставки эмулятора. Разные версии утилиты могут конфликтовать, и команда отправляется «не тому» серверу.

Полезные действия в такой ситуации:

  • 🧭 Убедитесь, что в переменной PATH указан один путь к adb
  • 🔁 Перезагрузите компьютер — это сбросит все зависшие процессы и сокеты
  • 🔄 Обновите platform-tools до актуальной версии из официального источника
  • 🔌 Попробуйте другой USB-порт и кабель, исключив проблемы подключения

Ключевой признак конфликта версий: команда adb version в разных терминалах или средах показывает разные номера сборок. В этом случае оставьте один комплект platform-tools и удалите лишние копии утилиты из системы.

Часто задаваемые вопросы

Почему ошибка появляется, хотя подключён только один телефон?

Скорее всего, сервер ADB видит дополнительное подключение: запущенный в фоне эмулятор, сетевое соединение через adb connect или «зависшую» запись со статусом offline. Выполните adb devices и проверьте список.

Как выполнить команду на конкретном устройстве, не отключая остальные?

Используйте флаг -s с серийным номером: adb -s СЕРИЙНИК команда. Серийный номер берётся из вывода adb devices.

Что означает статус offline рядом с устройством?

Запись о подключении осталась в сервере ADB, но реальная связь потеряна — например, после резкого отключения кабеля. Помогает перезапуск сервера командами adb kill-server и adb start-server.

Чем отличаются флаги -d, -e и -s?

-d направляет команду на единственное USB-устройство, -e — на единственный эмулятор, а -s — на устройство с конкретным серийным номером. Первые два работают, только если устройство в своей категории одно; -s универсален.

Опасна ли эта ошибка для данных на смартфоне?

Нет. Ошибка возникает до выполнения команды: ADB просто отказывается выбирать цель. Никакие изменения на устройствах при этом не происходят.