Запуск приложения через ADB: полная инструкция

Команда adb shell am start -n com.example.app/.MainActivity запускает приложение на Android-устройстве напрямую с компьютера, минуя лаунчер и иконки на рабочем столе. Этот способ незаменим, когда ярлык приложения пропал, нужно открыть скрытую активность для тестирования или экран смартфона повреждён и управлять им сенсором невозможно.

В этой статье разберём, как подготовить устройство и ПК, узнать имя пакета нужного приложения, выполнить запуск через Activity Manager и устранить типичные ошибки вроде device not found или Activity not started. Инструкция ориентирована на стандартный инструментарий Android SDK Platform-Tools от Google.

Что нужно подготовить перед запуском

Для работы потребуется три вещи: компьютер с установленными Platform-Tools, смартфон с включённой отладкой по USB и кабель, поддерживающий передачу данных. Отладка активируется в меню «Для разработчиков», которое открывается после нескольких нажатий на пункт Номер сборки в разделе «О телефоне». Точное расположение пунктов зависит от оболочки производителя, поэтому при расхождениях сверьтесь с документацией вашей модели.

После подключения кабелем проверьте, видит ли компьютер устройство:

adb devices

Если в списке отображается серийный номер со статусом device — соединение установлено. Статус unauthorized означает, что на экране смартфона нужно подтвердить запрос на разрешение отладки. Пустой список обычно указывает на проблему с драйвером (на Windows) или кабелем.

☑️ Подготовка к запуску приложения через ADB

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

Как узнать имя пакета приложения

Каждое Android-приложение идентифицируется уникальным именем пакета — например, com.android.settings у системных настроек. Именно его, а не отображаемое название, использует ADB. Узнать имя можно несколькими способами.

Самый универсальный — вывести список всех пакетов на устройстве и отфильтровать по фрагменту названия:

adb shell pm list packages | grep chrome

На Windows вместо grep используется findstr. Второй способ — запустить приложение вручную на смартфоне и посмотреть, какая активность сейчас на переднем плане:

adb shell dumpsys window | grep mCurrentFocus
  • 📦 pm list packages — полный список установленных пакетов;
  • 🔍 pm list packages | grep слово — поиск по фрагменту названия;
  • 👁 dumpsys window — активность, открытая на экране прямо сейчас;
  • 📋 cmd package resolve-activity — поиск главной активности пакета.

Запуск приложения командой am start

Основной инструмент запуска — команда am start, обращающаяся к Activity Manager системы Android. Самый надёжный вариант — указать компонент явно: имя пакета и полное имя активности через слэш:

adb shell am start -n com.android.settings/.Settings

Если главная активность неизвестна, попробуйте запуск через intent с действием по умолчанию:

adb shell monkey -p com.android.settings -c android.intent.category.LAUNCHER 1

Команда monkey изначально предназначена для стресс-тестирования, но с параметром -c LAUNCHER 1 она просто отправляет одно событие запуска — это удобный обходной путь, когда am start -n возвращает ошибку из-за неверно указанной активности.

📊 Для чего вы используете запуск приложений через ADB?
Тестирование своего приложения
Запуск скрытых или системных активностей
Управление смартфоном с повреждённым экраном
Автоматизация и скрипты

Полезные флаги и дополнительные параметры

Команда am start поддерживает флаги, меняющие поведение запуска. Например, -W заставляет ADB дождаться полного завершения запуска и вывести время старта — это используют для замера производительности. Флаг --user позволяет запустить приложение в конкретном пользовательском профиле на многопользовательских устройствах.

КомандаНазначение
am start -n пакет/.ActivityЗапуск конкретной активности
am start -a android.intent.action.VIEW -d URLОткрытие ссылки в приложении по умолчанию
am start -W -n пакет/.ActivityЗапуск с ожиданием и замером времени
monkey -p пакет 1Запуск без указания активности
am force-stop пакетПринудительная остановка приложения

Обратите внимание на пару am force-stop: перед повторным запуском при отладке полезно полностью завершить процесс, чтобы приложение стартовало «с нуля», а не восстанавливалось из памяти.

Как открыть конкретный экран приложения

Многие приложения имеют несколько активностей — например, отдельные экраны настроек. Их имена можно найти в файле AndroidManifest.xml внутри APK или командой dumpsys package с указанием пакета. Запуск выполняется тем же am start -n с полным именем нужной активности.

Типичные ошибки и их решение

Ошибка error: device not found означает, что ADB не видит смартфон: проверьте кабель, драйверы и статус в выводе adb devices. На Windows нередко помогает установка драйвера от производителя устройства или универсального Google USB Driver.

Сообщение Activity class ... does not exist говорит о неверно указанном имени активности. Проверьте точное написание через dumpsys package имя_пакета — регистр символов имеет значение. Ошибка Permission Denial возникает, если активность не экспортирована (не предназначена для внешнего запуска); такие экраны без root-прав открыть не получится.

⚠️ Внимание: команда am start с флагами вроде --user 0 или с системными компонентами способна открыть служебные экраны настроек. Не меняйте там параметры, назначение которых вам неизвестно, — это может нарушить работу устройства.

Запуск без кабеля: ADB по Wi-Fi

На Android 11 и новее доступна беспроводная отладка: в меню «Для разработчиков» активируется соответствующий переключатель, после чего устройство сопрягается с компьютером по коду или QR-коду, а подключение выполняется командой вида adb connect IP:порт. На старых версиях Android беспроводной режим требовал первичной настройки по USB. Точная процедура зависит от версии системы и оболочки, поэтому сверяйтесь с документацией для вашего устройства.

После подключения все команды запуска работают идентично проводному режиму — разница только в способе транспорта.

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

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

Можно ли запустить приложение через ADB без root-прав?

Да. Запуск обычных приложений командой am start не требует root — достаточно включённой отладки по USB. Root понадобится только для доступа к неэкспортированным (закрытым) активностям.

Почему am start возвращает ошибку «Activity not started»?

Чаще всего указано неверное имя активности или пакета. Уточните компонент через dumpsys package имя_пакета или используйте обходной запуск через monkey -p пакет 1.

Как запустить приложение, если на смартфоне разбит экран?

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

Можно ли передать данные в приложение при запуске?

Да, через extras: например, am start -n пакет/.Activity --es ключ значение передаёт строковый параметр. Поддерживаются также целые числа (--ei) и другие типы, но приложение должно уметь их обрабатывать.

Чем отличается am start от monkey?

am start требует точного указания активности и даёт полный контроль над intent. monkey запускает приложение по имени пакета без знания активности, но не поддерживает передачу параметров.