Ошибка ADB «more than one device/emulator»: причины и решение

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

Разобраться в проблеме можно за пару минут, если понимать логику работы Android Debug Bridge. Ниже разберём, почему возникает конфликт, как посмотреть список подключённых устройств и как нацелить команду на нужный девайс — вручную или автоматически.

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

ADB работает по клиент-серверной схеме: сервер на компьютере обслуживает все подключённые устройства сразу. Когда вы вводите команду вроде adb install app.apk или adb shell без дополнительных параметров, сервер ищет единственное активное устройство. Если их два и больше — выполнение прерывается с ошибкой.

Типичные ситуации, которые приводят к конфликту:

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

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

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

adb devices

В ответ вы получите таблицу из серийных номеров и статусов. Например, строка вида emulator-5554 device означает запущенный эмулятор, а буквенно-цифровой идентификатор вроде RF8N30XYZ12 — физический смартфон. Статус device говорит о готовности к работе, unauthorized — что на телефоне не подтверждена отладка, offline — о потере связи.

Если в списке присутствует устройство, которого, по вашему мнению, быть не должно, — возможная причина в «зависшем» подключении. Старые сессии adb connect по сети иногда сохраняются даже после отключения девайса. Очистить их поможет перезапуск сервера, о котором речь пойдёт ниже.

Шаг 2. Указываем целевое устройство флагом -s

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

adb -s emulator-5554 install app.apk

Такой подход работает с любой командой: adb -s RF8N30XYZ12 shell, adb -s 192.168.1.50:5555 logcat и так далее. Серийник подставляется сразу после adb, до самой команды — это важно, иначе параметр будет проигнорирован.

Когда устройств всего два и они разного типа, можно обойтись без серийных номеров. Флаг -d направляет команду на единственное USB-устройство, а флаг -e — на единственный эмулятор. Но если по USB подключено два телефона, -d тоже вернёт ошибку.

☑️ Порядок действий при ошибке more than one device/emulator

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

Шаг 3. Отключаем лишние устройства

Если постоянно указывать флаг -s неудобно, проще физически убрать лишние подключения. Отключите второй смартфон от USB или закройте ненужный эмулятор — после этого обычные команды adb снова будут работать без параметров.

С сетевыми подключениями ситуация тоньше. Чтобы разорвать конкретное Wi-Fi-подключение, используйте:

adb disconnect 192.168.1.50:5555

Команда adb disconnect без аргументов отключит все сетевые устройства сразу. Полный же сброс состояния делается перезапуском сервера:

adb kill-server

adb start-server

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

Сравнение способов адресации устройств

У ADB есть несколько механизмов выбора цели, и у каждого своя область применения. Сводная таблица поможет подобрать подходящий вариант:

СпособСинтаксисКогда применять
Флаг -sadb -s <serial> shellУниверсально, любое число устройств
Флаг -dadb -d install app.apkОдно USB-устройство среди эмуляторов
Флаг -eadb -e logcatОдин эмулятор среди USB-девайсов
Переменная окруженияANDROID_SERIALПостоянная работа с одним девайсом в скриптах
Отключение лишнихadb disconnectРазовая работа без лишних параметров

Переменная окружения ANDROID_SERIAL заслуживает отдельного упоминания: если задать в ней серийный номер, все команды adb в текущей сессии терминала будут автоматически направляться на это устройство. Это удобно в скриптах автоматизации, где прописывать -s в каждой строке громоздко.

Особый случай: одно устройство видно как два

Нередко пользователь уверен, что подключён один смартфон, а adb devices показывает две строки. Чаще всего дело в одновременном подключении по USB и по Wi-Fi: после выполнения adb tcpip 5555 и adb connect девайс регистрируется дважды — как USB-устройство и как сетевое.

Решение простое: либо отключите кабель и работайте по сети, либо выполните adb disconnect и оставьте только USB. Ещё одна возможная причина дублирования — «зависшая» запись после некорректного отключения; она убирается перезапуском сервера через adb kill-server.

Почему у эмулятора номер вида emulator-5554

Эмуляторы Android получают последовательные чётные порты начиная с 5554: первый — emulator-5554, второй — emulator-5556 и так далее. Чётные порты используются для adb-подключения, а соседние нечётные (5555, 5557) — для консоли эмулятора. По номеру порта всегда можно понять, сколько эмуляторов запущено.

Профилактика: как не сталкиваться с ошибкой снова

Чтобы конфликт устройств не отвлекал от работы, выстройте процесс заранее. Если вы разработчик и тестируете приложение на эмуляторе, отключайте физический телефон на время отладки или сразу привыкните к синтаксису с -s — он быстро входит в привычку.

При пакетной работе с несколькими девайсами удобно обернуть команды в цикл скрипта, который перебирает серийные номера из вывода adb devices и выполняет действие на каждом по очереди. Так вы избежите и ошибки, и ручного копирования идентификаторов.

  • 🧹 Периодически очищайте список сетевых подключений командой adb disconnect;
  • 🏷️ Записывайте серийные номера своих рабочих устройств, чтобы не искать их каждый раз;
  • ⚙️ В скриптах всегда используйте -s или ANDROID_SERIAL — это делает их устойчивыми к изменению окружения;
  • 🔁 После «странного» поведения ADB первым делом перезапускайте сервер — это безопасно и решает большинство накопленных проблем.

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

Можно ли выполнить команду сразу на всех подключённых устройствах?

В стандартном ADB такой встроенной опции нет. Нужно вручную перебрать серийные номера из вывода adb devices и выполнить команду с флагом -s для каждого устройства по очереди — обычно это автоматизируют скриптом.

Почему adb devices показывает статус unauthorized?

Это значит, что на смартфоне не подтверждён запрос на разрешение USB-отладки. Разблокируйте экран устройства и подтвердите диалог. Если диалог не появляется, отзовите авторизации в настройках разработчика и подключите кабель заново.

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

Флаг -d направляет команду на единственное устройство, подключённое по USB, а -e — на единственный запущенный эмулятор. Если устройств соответствующего типа несколько, оба флага вернут ту же ошибку more than one device/emulator.

Помогает ли переустановка драйверов при этой ошибке?

Нет, драйверы здесь ни при чём: ADB успешно видит все устройства, проблема только в отсутствии указания цели. Переустановка драйверов нужна, когда устройство вообще не отображается в adb devices.

Что делать, если устройство отображается как offline?

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