Ошибка please select a device в ADB: как выбрать устройство и устранить проблему

Сообщение please select a device при выполнении команды adb run или других операций в ADB означает одно: утилита не смогла однозначно определить, к какому устройству отправлять команду. Это происходит, когда к компьютеру подключено несколько Android-устройств или запущено несколько эмуляторов, а команда не содержит явного указания на конкретный аппарат.

Проблема не является критичной и решается за пару минут, если понимать механику работы Android Debug Bridge. Ниже разберём, как проверить список подключённых устройств, явно указать нужное устройство в команде и что делать, если устройство вообще не отображается в выводе ADB.

Почему ADB просит выбрать устройство

Утилита ADB работает по принципу «одна команда — одно устройство». Когда к ПК подключён один смартфон, ADB отправляет команды ему по умолчанию. Но как только в системе появляется второй аппарат — физический телефон, планшет или эмулятор Android — утилита теряет однозначность и отказывается выполнять команду без уточнения.

Типичные сценарии, при которых возникает запрос на выбор устройства:

  • 🔌 К компьютеру одновременно подключены два и более Android-устройства по USB.
  • 📱 Работает эмулятор (например, из Android Studio или сторонний), и рядом подключён физический смартфон.
  • 🌐 Одно устройство подключено по USB, а другое — через adb connect по Wi-Fi.
  • 👻 В системе «зависло» старое подключение: устройство физически отключено, но ADB-сервер ещё хранит его в списке.

Отдельный случай — когда устройств в списке нет вообще, а некоторые скрипты и оболочки вокруг ADB всё равно выводят похожее сообщение. Тогда причина не в выборе, а в том, что ADB просто не видит аппарат: не установлен драйвер, не включена отладка по USB или не подтверждён запрос на авторизацию на экране смартфона.

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

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

adb devices

В ответ вы получите таблицу из серийных номеров и статусов. Нормальный результат выглядит примерно так: слева идентификатор устройства, справа слово device. Если устройств несколько — вы увидите две и более строки и сразу поймёте, почему ADB просил уточнить цель команды.

Обратите внимание на статусы. Значение unauthorized говорит о том, что на экране смартфона не подтверждён запрос на разрешение отладки. Статус offline обычно указывает на сбой соединения — помогает переподключение кабеля или перезапуск ADB-сервера.

⚠️ Внимание: если устройство отображается со статусом unauthorized, проверьте экран смартфона — там должен быть диалог «Разрешить отладку по USB?». Отметьте пункт «Всегда разрешать с этого компьютера» и подтвердите. Без этого шага никакие команды ADB выполняться не будут.

📊 Что показывает команда adb devices в вашем случае?
Несколько устройств в списке
Одно устройство со статусом device
Статус unauthorized или offline
Список вообще пуст

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

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

adb -s emulator-5554 install app.apk

Вместо emulator-5554 подставьте идентификатор вашего устройства — он копируется из первого столбца таблицы. Такой синтаксис работает для любых команд: install, shell, push, reboot и других.

Есть и более короткие варианты, если тип устройства известен:

  • 📲 adb -d — отправить команду единственному физическому устройству, подключённому по USB (эмуляторы игнорируются).
  • 🖥️ adb -e — отправить команду единственному запущенному эмулятору.

Эти флаги удобны, когда физических аппаратов и эмуляторов ровно по одному. Если их больше, флаги -d и -e тоже вернут ошибку выбора — тогда только -s с точным серийным номером.

Сравнение способов указания устройства

Соберём варианты адресации команд в одну таблицу, чтобы было проще выбрать подходящий под вашу ситуацию.

Способ Пример команды Когда использовать
Флаг -s с серийником adb -s ABCD1234 shell Несколько устройств, нужен конкретный
Флаг -d adb -d install app.apk Одно USB-устройство среди эмуляторов
Флаг -e adb -e logcat Один эмулятор среди USB-устройств
Переменная ANDROID_SERIAL set ANDROID_SERIAL=ABCD1234 Постоянная работа с одним аппаратом
Отключение лишних устройств adb disconnect IP:PORT Лишние подключения по Wi-Fi

Шаг 3. Что делать, если список устройств пуст

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

На стороне смартфона убедитесь, что включён режим разработчика и в нём активирован пункт «Отладка по USB». Путь к этой настройке зависит от оболочки и версии Android, поэтому при необходимости сверьтесь с инструкцией для вашей модели. Затем переподключите кабель и посмотрите, не появился ли на экране запрос на разрешение отладки.

☑️ Диагностика пустого списка adb devices

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

На стороне компьютера частая причина — отсутствующий или некорректный USB-драйвер. В Windows откройте Диспетчер устройств и проверьте, нет ли аппарата с жёлтым значком или метки «Неизвестное устройство». Драйверы обычно доступны на сайте производителя смартфона; для многих устройств подходит и стандартный Google USB Driver, но совместимость лучше уточнить для конкретной модели.

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

Особые случаи: эмуляторы и подключение по Wi-Fi

Эмуляторы — частый источник «лишних» устройств. Даже закрытое окно эмулятора может оставлять активное подключение в ADB-сервере. Проверьте вывод adb devices: записи вида emulator-5554 указывают именно на эмуляторы. Если эмулятор не нужен, завершите его работу полностью.

При подключении по Wi-Fi через adb connect IP:PORT старые сессии иногда «зависают» и мешают новым командам. В этом случае помогает отключение ненужных адресов:

adb disconnect 192.168.1.50:5555

Если ничего не помогает, перезапустите сам ADB-сервер — это безопасная операция, которая сбрасывает все текущие подключения:

adb kill-server

adb start-server

После перезапуска снова выполните adb devices и подтвердите запрос на отладку на экране смартфона, если он появится повторно.

Почему после перезапуска сервера снова просят авторизацию

ADB-сервер при первом подключении обменивается ключами RSA с устройством. Если на смартфоне не был отмечен пункт «Всегда разрешать с этого компьютера», после перезапуска сервера диалог авторизации появится заново. Отметьте этот пункт один раз — и повторных запросов не будет.

Типичные ошибки при работе с несколькими устройствами

Несколько распространённых промахов, которые приводят к повторному появлению сообщения о выборе устройства:

  • 🔁 Запуск скриптов и батников, где внутри вызывается adb без флага -s, — правьте сам скрипт, а не только команду в терминале.
  • 🧩 Установка нескольких копий ADB (из Android Studio, отдельный platform-tools, сторонние утилиты), которые конфликтуют между собой. Оставьте одну актуальную версию и пропишите её в PATH.
  • 🔋 Подключение второго телефона «на зарядку» к тому же ПК — он тоже попадает в список ADB и ломает однозначность команд.

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

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

Почему ADB видит устройство, но команда всё равно просит его выбрать?

Значит, в списке adb devices больше одной строки — включая эмуляторы и «зависшие» Wi-Fi-подключения. Проверьте вывод команды и либо укажите устройство через adb -s серийный_номер, либо отключите лишние аппараты.

Что означает статус unauthorized в adb devices?

Устройство физически подключено, но отладка не авторизована. Разблокируйте смартфон и подтвердите диалог «Разрешить отладку по USB?», желательно с галочкой «Всегда разрешать с этого компьютера». Если диалог не появляется, отключите и заново включите отладку по USB в настройках разработчика.

Как задать устройство по умолчанию, чтобы не писать -s каждый раз?

Установите переменную окружения ANDROID_SERIAL со значением серийного номера нужного аппарата. В Windows это делается через «Система → Дополнительные параметры → Переменные среды» или временно командой set ANDROID_SERIAL=серийник в текущей сессии терминала.

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

Как правило, нет — сообщение о выборе устройства это не сбой, а штатное поведение при нескольких подключениях. Переустановка имеет смысл только при конфликте версий ADB или повреждённых файлах platform-tools.

Можно ли работать с двумя устройствами одновременно?

Да, но каждую команду нужно адресовать отдельно через флаг -s. Для параллельных задач удобно открыть два окна терминала, в каждом задать свою переменную ANDROID_SERIAL и работать с аппаратами независимо.