У меня есть одно Android-устройство, на котором работает Jelly Bean OS.
Есть ли способ обнаружить, что процесс запущен или не используется командой ADB
, если я знаю имя пакета ?
У меня есть одно Android-устройство, на котором работает Jelly Bean OS.
Есть ли способ обнаружить, что процесс запущен или не используется командой ADB
, если я знаю имя пакета ?
Не нужно использовать 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 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}'
Если он запущен, появится имя, если не будет возвращен результат.
В качестве альтернативы вы можете пойти с pgrep
или Process Grep. (Требуется Busybox)
Вы можете сделать adb shell pgrep com.example.app
и отобразить только идентификатор процесса.
В качестве предположения, поскольку Android является Linux, вы можете использовать большинство базовых команд Linux с помощью adb shell
для навигации/управления.: D
Если вы хотите напрямую получить имя пакета текущего приложения в фокусе, используйте эту команду adb -
adb shell dumpsys window windows | grep -E 'mFocusedApp'| cut -d / -f 1 | cut -d " " -f 7
Дополнительная информация из результата команды adb удаляется с помощью команды cut. Исходное решение от здесь.
Я только заметил, что верх доступен в adb, поэтому вы можете делать такие вещи, как
adb shell
top -m5
чтобы контролировать пятерку процессов захвата процессора.
или
adb shell top -m5 -s cpu -n 20|tee top.log
чтобы записать это в течение одной минуты и собрать вывод в файл на вашем компьютере.
Try:
adb shell pidof <myPackageName>
Стандартный вывод будет пустым, если приложение не запущено. В противном случае он выведет PID.