Как обнаружить запущенное приложение с помощью команды ADB
У меня есть одно Android-устройство под управлением Jelly Bean OS.
Есть ли способ обнаружить, что процесс запущен или не используется ADB
Команда, если я знаю имя пакета?
6 ответов
Нет необходимости использовать grep. ps
в Android можно отфильтровать по COMM
значение (последние 15 символов имени пакета в случае Java-приложения)
Допустим, мы хотим проверить, если com.android.phone
бежит:
adb shell ps m.android.phone
USER PID PPID VSIZE RSS WCHAN PC NAME
radio 1389 277 515960 33964 ffffffff 4024c270 S com.android.phone
Фильтрация по COMM
опция значения была удалена из ps
в Android 7.0. Чтобы проверить запущенный процесс по имени в Android 7.0, вы можете использовать pidof
команда:
adb shell pidof com.android.phone
Он возвращает PID, если такой процесс был найден, или пустую строку в противном случае.
Ты можешь использовать
adb shell ps | grep apps | awk '{print $9}'
произвести вывод как:
com.google.process.gapps
com.google.android.apps.uploader
com.google.android.apps.plus
com.google.android.apps.maps
com.google.android.apps.maps:GoogleLocationService
com.google.android.apps.maps:FriendService
com.google.android.apps.maps:LocationFriendService
Оболочка adb ps возвращает список всех запущенных процессов на устройстве Android, grep apps ищет любую строку, содержащую "apps", как вы можете видеть выше, они все com.google.android.APPS. или GAPPS, awk извлекает 9-й столбец, который в данном случае является именем пакета.
Для поиска конкретного пакета используйте
adb shell ps | grep PACKAGE.NAME.HERE | awk '{print $9}'
т.е. adb shell ps | grep com.we7.player | awk '{print $9}'
Если он запущен, появится имя, если нет, результат не будет возвращен.
Если вы хотите напрямую получить имя пакета текущего приложения в фокусе, используйте эту команду adb -
adb shell dumpsys window windows | grep -E 'mFocusedApp'| cut -d / -f 1 | cut -d " " -f 7
Дополнительная информация из результата команды adb удаляется командой cut. Оригинальное решение здесь.
Я только что заметил, что top доступен в adb, так что вы можете делать такие вещи, как
adb shell
top -m 5
для мониторинга пяти лучших процессов загрузки процессора.
Или же
adb shell top -m 5 -s cpu -n 20 |tee top.log
записать это в течение одной минуты и собрать вывод в файл на вашем компьютере.
Пытаться:
adb shell pidof <myPackageName>
Стандартный вывод будет пустым, если приложение не запущено. В противном случае он выведет PID.
В качестве альтернативы, вы можете пойти с pgrep
или Процесс Grep. (Busybox необходим)
Вы могли бы сделать adb shell pgrep com.example.app
и он будет отображать только идентификатор процесса.
В качестве предложения, поскольку Android - это Linux, вы можете использовать большинство основных команд Linux с adb shell
для навигации / управления вокруг.:D