Как обнаружить запущенное приложение с помощью команды 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

Другие вопросы по тегам