Antworten:
Android weist jeder Anwendung bei der Installation eine UID (Benutzer-ID) zu. Im Gegensatz zu PID (Process ID), die vorübergehend ist und sich ständig ändert, bleibt UID konstant, solange die Anwendung nicht erneut installiert wird. Die UID sollte für jede Anwendung eindeutig sein, es sei denn, die Anwendung fordert ausdrücklich die Freigabe einer Benutzer-ID für eine andere Anwendung an (es bestehen Sicherheitsbeschränkungen, die beiden Anwendungen müssen mit demselben privaten Schlüssel signiert sein, dh sie stammen vom selben Entwickler).
Diese Anwendungen geben an, die UID der Anwendungen anzuzeigen:
BEARBEITEN:
Versuchen Sie es mit /data/system/packages.xml
(Sie benötigen root, um diese Datei anzuzeigen). Jede installierte Anwendung sollte dort einen Eintrag haben. Angenommen, ich habe Adobe Reader auf meinem Handy installiert:
<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>
Mein Telefon hat userId="10034"
Adobe Reader zugewiesen .
Für Anwendungen, die die Freigabe der Benutzer-ID für eine andere Anwendung angefordert haben, sagen Sie 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>
dann ist das gesuchte Attribut sharedUserId="10064"
Richten Sie adb in einem PC ein, verbinden Sie das Gerät mit dem PC, starten Sie eine Shell auf dem PC und geben Sie Folgendes ein:
adb shell "dumpsys package | grep -A1 'userId=UID'"
Ersetzen Sie UID
durch die ID, nach der Sie suchen, z. B. 10102.
Beispiel:
bash-4.2 # adb shell "dumpsys package | grep -A1 'userId = 10102'" userId = 10102 pkg = Paket {46171ce com.android.chrome } bash-4.2 #
Die Zeile mit Package{
würde den Paketnamen der App zwischen Whitespace und }
. Sie können tun adb shell dumpsys package PKG_NAME
( PKG_NAME
→ Paketname einer App), um weitere Details zu diesem Paket / dieser App zu erfahren.
Wenn das Android- System über die ADB-Shell oder eine Terminalemulator-App gerootet ist, können Sie Folgendes tun:
su cat /data/system/packages.list | grep UID
In der Ausgabe ist alles vor der UID der Paketname.
Beispiel:
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 root @ shamu: / #
Alternativ, wenn Sie haben Busybox oder Toybox installiert und verfügbar unter PATH - Variablen, von einem Terminal - Emulator oder ADB Shell tun:
su find / data / data / -type d -group UID -maxtiefe 1 | xargs basename
Beispiel:
shell @ shamu: / $ su root @ shamu: / # find / data / data / -group 10102 -typ d -maxdepth 1 | xargs basename com.android.chrome root @ shamu: / #
Da wir am Etikett der App und nicht am Paketnamen interessiert sind, fahren Sie mit der Antwort von GAThrawn oder von Izzy fort .
Installieren Sie einen Terminalemulator , starten Sie ihn und führen Sie Folgendes aus:
ps | grep 10058
ps
Listet die Prozesse und grep
Filter für die gewünschte ID auf.
Dies funktioniert jedoch nur, wenn die Anwendung beim Ausführen des Befehls ausgeführt wird.
Verwenden Sie in der ADB-Shell (oder im Terminalemulator) den folgenden Befehl:
cat /proc/<your_process_id_here>/status
und schauen Sie in das Feld "Name". Dies sollte der Name des Prozesses sein. In Ihrem Fall wäre es also " cat / proc / 10058 / status ".
Ich hatte ein ähnliches Problem mit Android 6.0, Moto G 2nd Gen aus dem Jahr 2014. Ich hatte zufällig die ES File Explorer-Anwendung aktualisiert und bemerkte, dass sie höllisch aufgebläht war und eine Menge Batterie aufgesaugt hatte. Ich habe die Anwendung vom System entfernt, aber die Anwendung hat einen Zombie-Prozess veranlasst, die CPU zu belegen. Die UID ähnelte Ihrer 10118 und wurde in der Batteriestatistik als der Prozess mit den meisten Ressourcen aufgeführt.
Dann habe ich eine App namens "OS Monitor" installiert und festgestellt, dass eine .esfm-Datei tatsächlich der einzige Prozess ist, der 60% der CPU einnimmt. Ich hatte sofort gewusst, dass es mit ES File Explorer zu tun hat, aber warte ... Ich hatte ES File Explorer deinstalliert. Ja. Das einzige, was ich nicht getan habe, war das Smartphone neu zu starten. Glauben Sie mir, ich dachte über verrückte Dinge nach, wie z. B. Wurzeln schlagen und den Mist aus diesem Prozess schlagen, das Telefon gegen die Wand werfen und sogar anfangen zu glauben, dass mein Akku das Ende seiner Lebensdauer erreicht hat. Zu meiner Überraschung habe ich einfach das Telefon neu gestartet und der Vorgang war beendet.
Versuchen Sie also, bevor Sie drastische Maßnahmen ergreifen, herauszufinden, welche App Ihnen eine schlechte Zeit bereitet, deinstallieren Sie sie und starten Sie das Telefon neu. Überprüfen Sie auf OS Monitor die CPU-Auslastung Liste, und Sie sollten in Ordnung sein.
So finden Sie "alles" nach UID (oder GroupID) auf einem verwurzelten Telefon, einschließlich ausgeführter Prozesse, System-Apps und Hardwaresensoren:
# ID=3011; find / -group $ID -o -user $ID 2>/dev/null
# 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
# 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
find /data/data/ -user UID -type d -maxdepth 1 | xargs basename
Sie diese Option, wenn Sie im erstenfind
Befehl mehrere Ergebnisse erhalten .