Ошибка 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 и забывает отключиться.
☑️ Порядок устранения ошибки
Особые случаи: эмуляторы и дубли записей
Среды разработки и сторонние эмуляторы нередко держат свои процессы в фоне даже после закрытия окна. Android Studio может оставить запущенным AVD, а эмуляторы вроде BlueStacks работают как служба. Если запись emulator-5554 не исчезает, завершите соответствующий процесс через диспетчер задач или штатными средствами самого эмулятора.
Другой сценарий — одно и то же устройство отображается дважды. Возможная причина — конфликт драйверов или одновременное подключение по USB и по сети. Проверьте: если серийный номер дублируется с разными статусами, отключите кабель, выполните adb kill-server, подключите заново и подтвердите отладку.
⚠️ Внимание: не завершайте незнакомые процессы в диспетчере задач «наугад». Завершайте только те, что относятся к эмуляторам или 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 просто отказывается выбирать цель. Никакие изменения на устройствах при этом не происходят.