Wie finde ich den App-Namen anhand der UID?

In "Batterieverlauf" habe ich festgestellt, dass die App mit UID 10058 viel Batterie verbraucht.

Wie finde ich den Namen der App mit UID gleich 10058?

Antworten (6)

Android weist jeder Anwendung bei der Installation eine UID (Benutzer-ID) zu; Im Gegensatz zu PID (Prozess-ID), die vorübergehend ist und sich ständig ändert, bleibt UID konstant, solange die Anwendung nicht neu installiert wird. Die UID sollte für jede Anwendung eindeutig sein, es sei denn, die Anwendung fordert explizit an, eine Benutzer-ID mit einer anderen Anwendung zu teilen (es gibt Sicherheitsbeschränkungen, die beiden Anwendungen müssen mit demselben privaten Schlüssel signiert sein, dh vom selben Entwickler stammen).

Diese Anwendungen geben vor, die UID von Anwendungen anzuzeigen:

BEARBEITEN:

Versuchen Sie es mit einem Blick auf /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 Telefon 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 ist userId="10034"Adobe Reader zugewiesen.

Sagen Sie für Anwendungen, die die gemeinsame Nutzung der Benutzer-ID mit einer anderen Anwendung angefordert haben, 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 AttributsharedUserId="10064"

Voraussetzungen : in einem PC ein, verbinden Sie das Gerät mit dem PC, starten Sie eine Shell auf dem PC, um adb-Befehle einzugeben.

Hinweis :

  • Ersetzen UIDSie in den folgenden Befehlen überall dort, wo es vorkommt, durch die UID, nach der Sie suchen.
  • Die folgenden Befehle würden nur den Paketnamen der App bereitstellen, die Ihrer UID entspricht. Um das App-Label/den App-Namen nach Erhalt des Paketnamens zu erhalten, können Sie meine Antwort hier oder von GAThrawn's oder von Izzy's verwenden .

Für Android 8.x und höher

Geben Sie den Befehl ein:

adb shell cmd Paketliste Pakete --uid UID 
adb Shell pm Liste Pakete --uid UID                  # alternativer Befehl

Beispiel:

$ adb shell pm list packages --uid 10250 
Paket: com.adobe.scan.android uid: 10250

Für Android 7.x und höher

Geben Sie den Befehl ein:

adb shell "cmd Paketliste Pakete -U | grep UID "
adb shell "pm list packages -U | grep UID " # alternativer Befehl


Wenn die oben genannten cmds nicht funktionieren, können Sie diese unten versuchen, indem Sie den genauen Namen der 
adb-Shell "cmd package list packages uid UID " angeben.
adb shell "pm list packages uid UID " # alternativer Befehl

Beispiel:

$ adb shell "cmd Paketliste Pakete -U | grep 10247 "
Paket: dev.ukanth.ufirewall UID: 10247

Für jede Android-Version (getestet von Android 4.2.1 bis 10.0)

Geben Sie den Befehl ein:

Adb-Shell "Dumpsys-Paket | grep -A1 'userId= UID '"

Es kann einige Sekunden dauern, bis die gewünschte Ausgabe gedruckt wird.

Beispiel:

$ adb shell "dumpsys Paket | grep -A1 'userId= 10102 ' "
   userId= 10102 
   pkg=Paket{46171ce com.android.chrome }

Die Zeile mit Package{würde den Paketnamen der App zwischen Leerzeichen und anzeigen }. Sie können adb shell dumpsys package PKG_NAME( PKG_NAME→ Paketname einer App) tun, um mehr Details über dieses Paket/diese App zu erfahren.


Für gerootete Android-Versionen

Wenn das Android gerootet ist, können Sie mit der Adb-Shell oder einer Terminal-Emulator-App Folgendes tun:

so
cat /data/system/packages.list | grep- UID

In der Ausgabe wäre 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

Alternativ , wenn Sie Busybox oder Toybox installiert haben und unter PATH-Variable verfügbar sind, als von einem Terminal-Emulator oder einer Adb-Shell :

so
find /data/data/ -type d -group UID -maxdepth 1 | xargs-Basisname

Beispiel:

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

Bei mir funktioniert das ohne root.

Installieren Sie einen Terminalemulator , starten Sie ihn und führen Sie Folgendes aus:

ps | grep 10058

pslistet die Prozesse und grepFilter für die gewünschte ID auf.

Dies funktioniert jedoch nur, wenn die Anwendung ausgeführt wird, wenn Sie den Befehl ausführen.

Ich versuche das, aber es funktioniert nicht, weil eine solche App noch nicht läuft
Dies ist für PID, der Fragesteller bezog sich auf UID
Die UID wird in der ps-Ausgabe ebenso angezeigt wie die PID. Die ps-Ausgabe enthält normalerweise Zeilen wie „12345 app_118...“, wobei 12345 die PID und app_118 die UID ist (entsprechend userId=10118 in /data/system/packages.xml).

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 "

10058 soll hier die PID sein, während OP uns die UID gegeben hat.

Ich hatte ein ähnliches Problem mit Android 6.0, Moto G 2nd Gen aus dem Jahr 2014. Ich habe zufällig die ES File Explorer-Anwendung aktualisiert und festgestellt, dass sie höllisch aufgebläht war und viel Batterie verbrauchte. Ich habe die Anwendung aus dem System entfernt, aber die Anwendung ließ einen Zombie-Prozess zu, der die CPU beanspruchte. Die UID war ähnlich wie Ihre 10118 und wurde in der Batteriestatistik als Prozess mit dem größten Ressourcenhunger aufgeführt.

Dann installierte ich eine App namens „OS Monitor“ und stellte fest, dass eine .esfm-Datei tatsächlich der einzige Prozess war, der 60 % der CPU beanspruchte. Ich hatte sofort gewusst, dass es mit ES File Explorer zu tun hatte, 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 habe über verrückte Dinge nachgedacht, wie Rooten gehen und den Mist aus diesem Prozess herausprügeln, das Telefon gegen die Wand werfen und sogar angefangen zu glauben, dass mein Akku das Ende seiner Lebensdauer erreicht hat. Zu meiner Überraschung habe ich das Telefon einfach neu gestartet und der Vorgang war weg.

Bevor Sie also drastische Maßnahmen ergreifen, versuchen Sie 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-Auslastungsliste, und es sollte Ihnen gut gehen.

So finden Sie „alles“ nach UID (oder GroupID) auf einem gerooteten Telefon , einschließlich laufender Prozesse, System-Apps und Hardwaresensoren:

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

Beispiel 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

Beispiel 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