Запуск приложения через adb без знания Название действия
Примечание. Это НЕ общий вопрос о запуске приложения Android с помощью инструмента Android adb, который, по мнению некоторых членов сообщества, является дубликатом. Как явственно указано ниже, я уже знаю, что это можно сделать с помощью adb, но с ограничением, что нам нужно знать имя Activity.
Итак, этот вопрос касается того, как запустить приложение с adb БЕЗ, зная название действия.
Из сообщения Можно ли начать работу через оболочку adb?, мы можем запустить приложение для Android через adb с помощью
adb shell am start -n yourpackagename/.activityname
Но можно ли запустить Android-приложение через adb, не зная имя Activity? Например, отправив пакет android.intent.action.MAIN в пакет? Может быть, некоторая команда вроде этого:
adb shell am start -a android.intent.action.MAIN -n packageName
Ответы
Ответ 1
Да, можно запустить приложение через оболочку adb, используя инструмент обезьяны.
Используя команду этот ответ:
adb shell monkey -p app.package.name -c android.intent.category.LAUNCHER 1
Эта команда имитирует щелчок значка приложения, поэтому намерение подразумеваемого намерения LAUNCHER доставляется конкретному получателю, объявленному в манифесте приложения (MAIN)
Ответ 2
Используя последние версии (по крайней мере, API 25), вы можете запустить действие по умолчанию, не зная его имени, и не использовать monkey
:
PKG=com.android.calculator2
adb shell am start $PKG/$(adb shell cmd package resolve-activity -c android.intent.category.LAUNCHER $PKG | sed -n '/name=/s/^.*name=//p')
Ответ 3
Если у вас есть файл apk, вы можете установить и запустить приложение, используя droidbot.
> droidbot -d emulator-5554 -a <xxx.apk> -install_app -policy none -count 0
DroidBot основан на adb, но он использует статический анализ для автоматического извлечения имени Activity.