web-dev-qa-db-fra.com

Comment détecter l'application en cours d'exécution à l'aide de la commande ADB

J'ai un Android Appareil sous Jelly Bean OS.

Existe-t-il un moyen de détecter le processus en cours ou de ne pas utiliser la commande ADB si je connais le nom du paquet?

48
Rinkal Bhanderi

Pas besoin d'utiliser grep. ps in Android peut filtrer par COMM valeur (les 15 derniers caractères du nom du paquet en cas de Java app)

Disons que nous voulons vérifier si com.Android.phone est en cours d'exécution:

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

Filtrage par COMM option de valeur a été supprimé de ps in Android 7.0. Pour rechercher un processus en cours d'exécution par son nom dans = Android 7.0, vous pouvez utiliser la commande pidof:

adb Shell pidof com.Android.phone

Il renvoie le PID si un tel processus a été trouvé ou une chaîne vide dans le cas contraire.

66
Alex P.

Vous pouvez utiliser

adb Shell ps | grep apps | awk '{print $9}'

pour produire une sortie comme:

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 renvoie la liste de tous les processus en cours d'exécution sur le périphérique Android, les applications grep recherchent toute ligne contenant des "applications". Comme vous pouvez le voir ci-dessus, elles sont toutes com.google.Android. APPS ou GAPPS, awk extrait la 9ème colonne qui est dans ce cas le nom du paquet.

Pour rechercher un paquet particulier, utilisez

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

c'est à dire adb Shell ps | grep com.we7.player | awk '{print $9}'

S'il est en cours d'exécution, le nom apparaîtra, sinon aucun résultat ne sera renvoyé.

31
o0rebelious0o

Si vous souhaitez obtenir directement le nom du package de l'application actuelle, utilisez cette commande adb -

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

Les informations supplémentaires issues du résultat de la commande adb sont supprimées à l'aide de la commande cut. Solution originale de ici .

11
abhiank

Je viens de remarquer que top est disponible dans adb, vous pouvez donc faire des choses comme

  adb Shell
  top -m 5

pour surveiller les cinq principaux processus de monopolisation du processeur.

Ou

  adb Shell top -m 5 -s cpu -n 20 |tee top.log

pour enregistrer pendant une minute et collecter la sortie dans un fichier sur votre ordinateur.

9
StefanQ

Essayer:

adb Shell pidof <myPackageName>

La sortie standard sera vide si l'application n'est pas en cours d'exécution. Sinon, le PID sera généré.

5
Chris Sears

Vous pouvez également utiliser pgrep ou Process Grep. (Busybox est nécessaire)

Vous pourriez faire un adb Shell pgrep com.example.app et il n’afficherait que l’identifiant du processus.

À titre de suggestion, puisque Android est Linux, vous pouvez utiliser la plupart des commandes Linux de base avec adb Shell pour naviguer/contrôler. :RÉ

3
deubaka