46 votes

Comment puis-je trouver le nom de l'application par UID?

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 ?

35voto

Firelord Points 23064

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:

  • Remplacez UID partout où il apparaît dans les commandes suivantes par l'UID que vous recherchez.
  • Les commandes ci-dessous ne fourniront que le nom du package de l'application correspondant à votre UID. Pour obtenir le nom de l'étiquette/d'app après avoir obtenu le nom du package, vous pouvez utiliser ma réponse ici, ou celle de GAThrawn ou de Izzy.

Pour Android 8.x et supérieur

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**

Pour Android 7.x et supérieur

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**

Pour n'importe quelle version d'Android (testé de Android 4.2.1 à 10.0)

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.


Pour les versions d'Android rootées

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**

0 votes

Cela fonctionne pour moi sans racine.

34voto

Thej Points 655

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"

5voto

Snark Points 317

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.

0 votes

Je tente ceci, mais cela ne fonctionne pas, car une telle application n'est pas déjà en cours d'exécution

6 votes

Il s'agit de PID, le demandeur faisait référence à UID

2 votes

Le UID est affiché dans la sortie ps ainsi que le PID. La sortie ps a généralement des lignes comme '12345 app_118...' où 12345 est le PID et app_118 est le UID (correspondant à userId=10118 dans /data/system/packages.xml)

5voto

Chahk Points 19297

Dans ADB shell (ou émulateur de terminal), utilisez la commande suivante :

cat /proc//status

et regardez dans le champ "Nom". Cela devrait être le nom du processus. Donc dans votre cas, cela serait "cat /proc/10058/status"

3 votes

10058 est censé être le PID ici alors que OP nous a donné UID.

1voto

dbarros Points 11

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.com

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.

Powered by:

X