Подтвердить что ты не робот

Как обнаружить запущенное приложение с помощью команды ADB

У меня есть одно Android-устройство, на котором работает Jelly Bean OS.

Есть ли способ обнаружить, что процесс запущен или не используется командой ADB, если я знаю имя пакета ?

4b9b3361

Ответ 1

Не нужно использовать 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, если этот процесс был найден или пустая строка в противном случае.

Ответ 2

Вы можете использовать

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 shell ps возвращает список всех запущенных процессов на устройстве Android, grep-приложения ищут любую строку с "приложениями", как вы можете видеть выше, это все com.google.android.APPS. или GAPPS, awk извлекает 9-й столбец, который в этом случае является именем пакета.

Для поиска конкретного использования пакета

adb shell ps | grep PACKAGE.NAME.HERE | awk '{print $9}'

i.e adb shell ps | grep com.we7.player | awk '{print $9}'

Если он запущен, появится имя, если не будет возвращен результат.

Ответ 3

В качестве альтернативы вы можете пойти с pgrep или Process Grep. (Требуется Busybox)

Вы можете сделать adb shell pgrep com.example.app и отобразить только идентификатор процесса.

В качестве предположения, поскольку Android является Linux, вы можете использовать большинство базовых команд Linux с помощью adb shell для навигации/управления.: D

Ответ 4

Если вы хотите напрямую получить имя пакета текущего приложения в фокусе, используйте эту команду adb -

adb shell dumpsys window windows | grep -E 'mFocusedApp'| cut -d / -f 1 | cut -d " " -f 7

Дополнительная информация из результата команды adb удаляется с помощью команды cut. Исходное решение от здесь.

Ответ 5

Я только заметил, что верх доступен в adb, поэтому вы можете делать такие вещи, как

  adb shell
  top -m5

чтобы контролировать пятерку процессов захвата процессора.

или

  adb shell top -m5 -s cpu -n 20|tee top.log

чтобы записать это в течение одной минуты и собрать вывод в файл на вашем компьютере.

Ответ 6

Try:

adb shell pidof <myPackageName>

Стандартный вывод будет пустым, если приложение не запущено. В противном случае он выведет PID.