Dans "historique de la batterie", j'ai trouvé que l'application avec l'UID 10058 utilise beaucoup de batterie.
Comment puis-je trouver le nom de l'application avec l'UID égal à 10058 ?
Dans "historique de la batterie", j'ai trouvé que l'application avec l'UID 10058 utilise beaucoup de batterie.
Comment puis-je trouver le nom de l'application avec l'UID égal à 10058 ?
Prérequis: configurer adb sur un PC, connecter le périphérique au PC, lancer un shell sur le PC pour entrer des commandes adb.
Note:
UID
partout où il apparaît dans les commandes suivantes par l'UID que vous recherchez.Entrez la commande :
adb shell cmd package list packages --uid **UID**
adb shell pm list packages --uid **UID** # commande alternative
Exemple :
$ adb shell pm list packages --uid **10250**
package:**com.adobe.scan.android** uid:**10250**
Entrez la commande :
adb shell "cmd package list packages -U | grep **UID**"
adb shell "pm list packages -U | grep **UID**" # commande alternative
**SI les commandes ci-dessus ne fonctionnent pas, vous pouvez essayer celles ci-dessous pour obtenir le nom exact**
adb shell "cmd package list packages uid **UID**"
adb shell "pm list packages uid **UID**" # commande alternative
Exemple :
$ adb shell "cmd package list packages -U | grep **10247**"
package:**dev.ukanth.ufirewall** uid:**10247**
Entrez la commande :
adb shell "dumpsys package | grep -A1 'userId=**UID**'"
Cela pourrait prendre quelques secondes pour afficher la sortie souhaitée.
Exemple :
$ adb shell "dumpsys package | grep -A1 'userId=**10102**'"
userId=**10102**
pkg=Package{46171ce **com.android.chrome**}
La ligne contenant Package{
montrerait le nom du package de l'application entre des espaces vides et }
. Vous pouvez utiliser adb shell dumpsys package PKG_NAME
(PKG_NAME
nom du package d'une application) pour en savoir plus sur ce package/app.
Si Android est rooté, alors en utilisant adb shell ou une application d'émulateur de terminal, vous pouvez faire :
su
cat /data/system/packages.list | grep **UID**
Dans la sortie, tout ce qui précède l'UID serait le nom du package.
Exemple :
shell@shamu:/ $ su
root@shamu:/ # cat /data/system/packages.list | grep **10102**
**com.android.chrome** 10102 0 /data/data/com.android.chrome default 3002,3003,3001
Alternativement, si vous avez Busybox ou Toybox installé et disponible dans la variable PATH, alors à partir d'un émulateur de terminal ou de adb shell, faites ceci :
su
find /data/data/ -type d -group **UID** -maxdepth 1 | xargs basename
Exemple :
shell@shamu:/ $ su
root@shamu:/ # find /data/data/ -group **10102** -type d -maxdepth 1 | xargs basename
**com.android.chrome**
Android attribue à chaque application un UID (User ID) au moment de l'installation; contrairement au PID (Process ID) qui est transitoire et change tout le temps, UID reste constant tant que l'application n'est pas réinstallée. L'UID devrait être unique pour chaque application, sauf si l'application demande explicitement de partager un User ID avec une autre application (il y a des restrictions de sécurité autour de cela, les deux applications doivent être signées avec la même clé privée, c'est-à-dire provenant du même développeur).
Essayez de regarder /data/system/packages.xml
(vous avez besoin de droits root pour voir ce fichier), chaque application installée devrait avoir une entrée là-bas. Disons, j'ai Adobe Reader installé sur mon téléphone:
Mon téléphone a attribué userId="10034"
à Adobe Reader.
Pour les applications qui ont demandé de partager un User ID avec une autre application, disons Handcent:
alors l'attribut que vous cherchez est sharedUserId="10064"
Installez un émulateur de terminal, lancez-le et exécutez :
ps | grep 10058
ps
liste les processus et grep
filtre pour l'ID que vous souhaitez.
Mais cela ne fonctionne que si l'application est en cours d'exécution lorsque vous exécutez la commande.
Je tente ceci, mais cela ne fonctionne pas, car une telle application n'est pas déjà en cours d'exécution
J'ai rencontré un problème similaire avec Android 6.0, Moto G 2e génération de 2014. J'avais mis à jour l'application ES File Explorer et j'ai remarqué qu'elle était très gonflée et consommait beaucoup de batterie. J'ai supprimé l'application du système, mais l'application a laissé un processus zombie qui occupait le CPU. L'UID était similaire à la vôtre, 10118, et elle était répertoriée dans les statistiques de la batterie comme le processus le plus gourmand en ressources.
Ensuite, j'ai installé une application appelée "OS Monitor" et j'ai remarqué qu'un fichier .esfm était en fait le seul processus qui occupait 60% du CPU. J'avais immédiatement réalisé qu'il s'agissait de ES File Explorer, mais attendez... J'AVAIT désinstallé ES File Explorer. Oui. La seule chose que je n'avais pas faite était de REDÉMARRER le smartphone. Croyez-moi, je pensais à des choses folles, comme rooter et combattre ce processus, jeter le téléphone contre le mur, et j'avais même commencé à croire que ma batterie était en fin de vie. À ma grande surprise, j'ai simplement redémarré le téléphone et le processus avait disparu.
Donc avant de prendre des mesures drastiques, essayez de savoir quelle application vous pose problème, désinstallez-la et redémarrez le téléphone. Vérifiez dans OS Monitor la liste d'utilisation du CPU, et tout devrait rentrer dans l'ordre.
AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.