Команда 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
Как узнать имя пакета приложения
Каждое 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 возвращает ошибку из-за неверно указанной активности.
Полезные флаги и дополнительные параметры
Команда 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 запускает приложение по имени пакета без знания активности, но не поддерживает передачу параметров.