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?
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 : Richten Sie adb in einem PC ein, verbinden Sie das Gerät mit dem PC, starten Sie eine Shell auf dem PC, um adb-Befehle einzugeben.
Hinweis :
UID
Sie in den folgenden Befehlen überall dort, wo es vorkommt, durch die UID, nach der Sie suchen.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
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
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.
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
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 ausgeführt wird, wenn Sie den Befehl ausführen.
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 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
# 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
Anubischer Noob