Comment trouver le nom de l'application par UID?

39

Dans "historique de la batterie", j'ai constaté que l'application avec l'UID 10058 utilise beaucoup de batterie.

Comment trouver le nom de l'application avec un UID égal à 10058?

azat
la source

Réponses:

32

Android attribue à chaque application un UID (User ID) lors de l'installation. contrairement au PID (ID de processus) qui est transitoire et qui change constamment, l'UID reste constant tant que l'application n'est pas réinstallée. L'UID doit être unique pour chaque application, sauf lorsque l'application demande explicitement de partager un ID utilisateur avec une autre application (des restrictions de sécurité s'appliquent, les deux applications doivent être signées avec la même clé privée, c'est-à-dire qu'elles proviennent du même développeur).

Ces applications prétendent montrer l'UID des applications:

MODIFIER:

Essayez de regarder /data/system/packages.xml(vous avez besoin de root pour voir ce fichier), chaque application installée devrait y avoir une entrée. Dis, Adobe Reader est installé sur mon téléphone:

<package name="com.adobe.reader" codePath="/mnt/asec/com.adobe.reader-1/pkg.apk" flags="262144" ts="1300539048000" version="37149" userId="10034" installer="com.google.android.feedback">
<sigs count="1">
<cert index="21" key="... very long random string ..." />
</sigs>
<perms />
</package>

Mon téléphone a été attribué userId="10034"à Adobe Reader.

Pour les applications qui ont demandé à partager l'ID utilisateur avec une autre application, dites Handcent:

<package name="com.handcent.nextsms" codePath="/system/app/HandcentSMS.apk" flags="1" ts="1217592000000" version="373" sharedUserId="10064">
<sigs count="1">
<cert index="17" key="... very long random string ..." />
</sigs>
</package>

alors l'attribut que vous recherchez est sharedUserId="10064"

Lie Ryan
la source
26

Configurez sur un PC, connectez l’appareil au PC, lancez un shell sur le PC et entrez:

adb shell "dumpsys package | grep -A1 'userId=UID'"

Remplacez-la UIDpar l'ID que vous recherchez, par exemple 10102.

Exemple:

shell adb bash-4.2 "paquet dumpsys | grep -A1 'userId = 10102'"
   userId = 10102
   pkg = Paquet {46171ce com.android.chrome }
bash-4.2 #

La ligne contenant Package{afficherait le nom du package de l'application entre les espaces et }. Vous pouvez faire adb shell dumpsys package PKG_NAME( PKG_NAME→ nom du package d'une application) pour en savoir plus sur ce package / application.


Si Android est enraciné, à partir d' un shell adb ou d'une application d'émulateur de terminal, vous pouvez effectuer les opérations suivantes:

su
cat /data/system/packages.list | grep UID

Dans la sortie, tout ce qui précède l'UID correspond au 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 par défaut 3002,3003,3001
root @ shamu: / #

Sinon, si Busybox ou Toybox est installé et disponible sous la variable PATH, à partir d'un émulateur de terminal ou d' un shell adb, procédez comme suit :

su
find / data / data / -type d-group UID -maxdepth 1 | xargs nom de base

Exemple:

shell @ shamu: / $ su
root @ shamu: / # find / data / data / -group 10102 -type d -maxdepth 1 | xargs nom de base
com.android.chrome
root @ shamu: / #

Puisque nous sommes intéressés par l’étiquette de l’application et non par le nom du paquet, poursuivons avec la réponse de GAThrawn ou d’Izzy .

Firelord
la source
Utilisez-le find /data/data/ -user UID -type d -maxdepth 1 | xargs basenamesi vous obtenez plusieurs résultats dans la première findcommande.
Firelord
Cela fonctionne pour moi sans racine.
Anubian Noob
5

Installez un émulateur de terminal , lancez-le et exécutez:

ps | grep 10058

psrépertorie les processus et les grepfiltres pour l'ID souhaité.

Mais cela ne fonctionne que si l'application est en cours d'exécution lorsque vous exécutez la commande.

Snark
la source
J'essaie cela, mais ça ne marche pas, car une telle application n'est pas déjà
lancée
6
Ceci est pour PID, le demandeur faisait référence à UID
Lie Ryan le
2
L'UID est affiché dans la sortie ps ainsi que le PID. La sortie ps comporte généralement des lignes telles que '12345 app_118 ...', où 12345 est le PID et app_118 est l'UID (correspondant à userId = 10118 dans /data/system/packages.xml)
Art Swri
5

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

cat /proc/<your_process_id_here>/status

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

Chahk
la source
3
10058 est censé être le PID ici alors que l'OP nous a donné l'UID.
Firelord
0

J'avais un problème similaire avec Android 6.0, Moto G, 2e génération de 2014. J'ai mis à niveau l'application ES File Explorer et j'ai remarqué qu'elle était gonflée à fond et entraînait beaucoup de batterie. J'ai supprimé l'application du système, mais l'application a laissé un processus zombie prendre du temps processeur. L'UID était semblable au vôtre 10118 et figurait dans les statistiques de la batterie comme étant le processus de ressource le plus affamé.

Ensuite, j'ai installé une application nommée "OS Monitor" et constaté qu'un fichier .esfm était en fait le seul processus occupant 60% du processeur. Je savais immédiatement que cela avait à voir avec ES File Explorer, mais attendez ... j’ai désinstallé ES File Explorer. Oui. La seule chose que je n'ai pas faite est de redémarrer le smartphone. Croyez-moi, je pensais à des choses folles, comme aller au bout du processus, jeter le téléphone contre le mur et même commencer à 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 déterminer quelle application vous donne le mauvais temps, désinstallez-la puis redémarrez le téléphone. Vérifiez sur le système d'exploitation Surveillez la liste d'utilisation du processeur, et tout devrait bien se passer.

dbarros
la source
0

Pour rechercher "tout" par UID (ou GroupID) sur un téléphone enraciné , y compris les processus en cours d'exécution, les applications système et les capteurs matériels:

# ID=3011; find / -group $ID -o -user $ID   2>/dev/null

Exemple 1:

# ID=3011; find / -group $ID -o -user $ID   2>/dev/null
/proc/208
/proc/208/task
/proc/208/task/208
/proc/208/task/208/attr
[...]

# ls -la /proc/208/exe
lrwxrwxrwx 1 root root 0 2017-04-04 22:14 /proc/208/exe -> /system/bin/sensors.qcom

Exemple 2

# ID=10009; find / -group $ID -o -user $ID   2>/dev/null
/data/misc/profiles/cur/0/com.android.cellbroadcastreceiver
/data/misc/profiles/cur/0/com.android.cellbroadcastreceiver/primary.prof
/data/data/com.android.cellbroadcastreceiver
/data/data/com.android.cellbroadcastreceiver/cache
/data/data/com.android.cellbroadcastreceiver/code_cache
/data/user_de/0/com.android.cellbroadcastreceiver
/data/user_de/0/com.android.cellbroadcastreceiver/cache
/data/user_de/0/com.android.cellbroadcastreceiver/code_cache
/data/user_de/0/com.android.cellbroadcastreceiver/code_cache/com.android.opengl.shaders_cache
/data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs
/data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs/com.android.cellbroadcastreceiver_preferences.xml
/data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs/_has_set_default_values.xml
/data/user_de/0/com.android.cellbroadcastreceiver/databases
/data/user_de/0/com.android.cellbroadcastreceiver/databases/cell_broadcasts.db
/data/user_de/0/com.android.cellbroadcastreceiver/databases/cell_broadcasts.db-journal
Alec Istomin
la source