Сообщение 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 выполняться не будут.
Шаг 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
На стороне компьютера частая причина — отсутствующий или некорректный 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 и работать с аппаратами независимо.