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?
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.
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é.
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 .
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.
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é.
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É