Большое спасибо, я сделал так, чтобы функция оболочки в ~ / .bash_profile была намного быстрее function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }и ее использованиеandroidrun com.example.test
Можно ли выполнить действие по умолчанию, вместо того, чтобы быть настолько специфичным для какого действия я намерен начать?
Android-разработчик
1
У меня были проблемы с поиском приложения и активности. Я использовал эту линию, adb logcat | grep --line-buffered ActivityManager | grep --line-bufferedчтобы перечислить все приложения, которые были показаны.
Att Righ
299
Можно запустить приложение с указанием имени пакета только с помощью инструмента обезьяна , следуя этой схеме:
Команда используется для запуска приложения, используя инструмент обезьяны, который генерирует случайный ввод для приложения. Последняя часть команды - целое число, которое определяет количество сгенерированных случайных входных данных для приложения. В данном случае это номер 1, который фактически используется для запуска приложения (щелчок по значку).
Launcher по умолчанию. Вы можете упростить доadb shell monkey -p your.app.package.name 1
Androiderson
3
Можно ли использовать имя файла APK вместо имени пакета? Предположим, у меня есть файл APK, и я хочу установить и запустить его, возможно ли это?
Android-разработчик
1
Что делать, если я получаю сообщение об ошибке: не найдено действий для запуска. прерывание ?
Игорь Ганапольский
3
@IgorGanapolsky, если никаких действий не найдено, это приложение-служба и вообще не имеет никаких действий.
3
1
@IgorGanapolsky, если это использование службы, adb shell am startservice com.some.package.name/.YourServiceSubClassNameсм. Здесь: stackoverflow.com/a/18703083/211292
ThomasW
123
Или вы можете использовать это:
adb shell am start -n com.package.name/.ActivityName
для Windows вы можете попробовать с Cygwin (не проверено)
dljava
3
Ваш пост заставил меня посмотреть на AWK. Я пошел дальше и заново создал твой сценарий. pastebin.com/X7X1SsFa
Кайл,
2
Это невероятно. Почему это не стандартная команда adb, мы никогда не узнаем.
Джон Тайри
Вам не нужно иметь aapt на вашем пути (если «android»), если вы установите PATH в скрипте adb-run.sh, например: PATH = $ (dirname $ (which android)) /. ./build-tools/20.0.0:$PATH
Когда вы запускаете приложение из adb shell am, оно автоматически добавляет флаг FLAG_ACTIVITY_NEW_TASK, который меняет поведение. Смотрите код .
Например, если вы запускаете действие из Play Store из adb shell am, нажатие кнопки « Назад » (аппаратная кнопка «назад») не отнимает у вас ваше приложение, вместо этого вы перенесете предыдущую активность в Play Store, если она была (если не было задачи Play store). , тогда это займет у вас ваше приложение). Документация FLAG_ACTIVITY_NEW_TASK гласит:
если задача уже запущена для действия, которое вы сейчас запускаете, то новое действие не будет запущено; вместо этого текущее задание будет просто выведено на переднюю часть экрана с состоянием, в котором оно было последним
Это заставило меня потратить несколько часов, чтобы выяснить, что пошло не так.
Итак, имейте в виду, что adb shell amдобавьте флаг FLAG_ACTIVITY_NEW_TASK .
Попробуйте это, чтобы открыть приложение для Android с определенным файлом изображения, чтобы открыть в качестве параметра.
adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
Он будет работать на последней версии Android, не появится всплывающее окно, чтобы выбрать приложение для открытия, поскольку вы даете конкретное приложение, для которого вы хотите открыть свое изображение с
У меня есть приложение для плеера, которое может передавать видео с URL, как я могу передать этот URL в качестве параметра и потока с этого URL? Предположим, URL-адрес с YouTube?
Ответы:
Или вы можете использовать это напрямую:
Вы также можете указать действия, которые будут фильтроваться вашими фильтрами намерений:
источник
function androidrun(){ ant clean debug adb shell am start -n $1/$1.MainActivity }
и ее использованиеandroidrun com.example.test
adb shell am
даст вам список других опций для передачи вam
команду. Вы можете узнать больше на developer.android.com/tools/help/adb.html#amadb logcat | grep --line-buffered ActivityManager | grep --line-buffered
чтобы перечислить все приложения, которые были показаны.Можно запустить приложение с указанием имени пакета только с помощью инструмента обезьяна , следуя этой схеме:
Команда используется для запуска приложения, используя инструмент обезьяны, который генерирует случайный ввод для приложения. Последняя часть команды - целое число, которое определяет количество сгенерированных случайных входных данных для приложения. В данном случае это номер 1, который фактически используется для запуска приложения (щелчок по значку).
источник
adb shell monkey -p your.app.package.name 1
adb shell am startservice com.some.package.name/.YourServiceSubClassName
см. Здесь: stackoverflow.com/a/18703083/211292Или вы можете использовать это:
источник
monkey -p com.package.name 1
Виаadb shell
Пользователи linux / mac могут также создать скрипт для запуска apk с чем-то вроде следующего:
создайте файл с именем "adb-run.sh" с этими 3 строками:
затем "chmod + x adb-run.sh", чтобы сделать его исполняемым.
теперь вы можете просто:
adb-run.sh myapp.apk
Преимущество в том, что вам не нужно знать имя пакета или имя запускаемой деятельности. Точно так же вы можете создать "adb-uninstall.sh myapp.apk"
Примечание: для этого необходимо, чтобы у вас был путь на вашем пути. Вы можете найти его в новой папке инструментов сборки в SDK.
источник
Кроме того, я хочу упомянуть еще одну вещь.
Когда вы запускаете приложение из
adb shell am
, оно автоматически добавляет флаг FLAG_ACTIVITY_NEW_TASK, который меняет поведение. Смотрите код .Например, если вы запускаете действие из Play Store из
adb shell am
, нажатие кнопки « Назад » (аппаратная кнопка «назад») не отнимает у вас ваше приложение, вместо этого вы перенесете предыдущую активность в Play Store, если она была (если не было задачи Play store). , тогда это займет у вас ваше приложение). Документация FLAG_ACTIVITY_NEW_TASK гласит:Это заставило меня потратить несколько часов, чтобы выяснить, что пошло не так.
Итак, имейте в виду, что
adb shell am
добавьте флаг FLAG_ACTIVITY_NEW_TASK .источник
Мы также можем запустить приложение, зная тип приложения и предоставляя ему данные:
Эта команда отображает доступные видеоплееры для воспроизведения файла sample.3gp
источник
Шаг 1: Сначала получите все имена пакетов приложений, установленных на вашем устройстве, используя:
adb shell pm list packages
Шаг 2: Вы получите все имена пакетов, скопируйте тот, который вы хотите начать использовать с помощью adb.
Шаг 3: Добавьте желаемое имя пакета в приведенной ниже команде.
adb shell monkey -p 'your package name' -v 500
источник
откройте ~ / .bash_profile и добавьте эти функции bash в конец файла
затем откройте папку проекта Android
источник
app-debug
делает?monkey --pct-syskeys 0
для разработчиковБез этого аргумента приложение не будет открываться на плате разработки без клавиш / дисплея:
и терпит неудачу с ошибкой:
Протестировано на HiKey960, Android O AOSP.
Извлечено из: https://github.com/ARM-software/lisa/pull/408
Также спрашивается по адресу: monkey test: Если в системе Android нет физических ключей, какие параметры необходимо включить в команду?
источник
Пример:
Вы можете использовать приложение APK-INFO, чтобы узнать список действий приложения для каждого пакета приложения.
источник
Попробуйте это, чтобы открыть приложение для Android с определенным файлом изображения, чтобы открыть в качестве параметра.
adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
Он будет работать на последней версии Android, не появится всплывающее окно, чтобы выбрать приложение для открытия, поскольку вы даете конкретное приложение, для которого вы хотите открыть свое изображение с
источник