Jak mogę znaleźć nazwę aplikacji według UID?


38

W „historii baterii” odkryłem, że aplikacja z UID 10058 zużywa dużo baterii.

Jak mogę znaleźć nazwę aplikacji o UID równym 10058?

Odpowiedzi:


32

Android przypisuje każdej aplikacji UID (identyfikator użytkownika) podczas instalacji; w przeciwieństwie do PID (ID procesu), który jest przejściowy i ciągle się zmienia, UID pozostaje stały, dopóki aplikacja nie zostanie ponownie zainstalowana. Identyfikator UID powinien być unikalny dla każdej aplikacji, z wyjątkiem sytuacji, gdy aplikacja wyraźnie zażąda współdzielenia identyfikatora użytkownika z inną aplikacją (istnieją ograniczenia bezpieczeństwa, obie aplikacje muszą być podpisane tym samym kluczem prywatnym, tj. Pochodzi od tego samego programisty).

Te aplikacje twierdzą, że pokazują UID aplikacji:

EDYTOWAĆ:

Spróbuj spojrzeć na /data/system/packages.xml(potrzebujesz roota, aby wyświetlić ten plik), każda zainstalowana aplikacja powinna mieć tam wpis. Załóżmy, że w moim telefonie jest zainstalowany program Adobe Reader:

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

Mój telefon przypisał userId="10034"program Adobe Reader.

W przypadku aplikacji, które poprosiły o udostępnienie identyfikatora użytkownika innej aplikacji, powiedz 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>

to atrybut, którego szukasz, to sharedUserId="10064"


25

Skonfiguruj na komputerze, podłącz urządzenie do komputera, uruchom powłokę na komputerze i wprowadź:

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

Zamień UIDna identyfikator, którego szukasz, na przykład 10102.

Przykład:

bash-4.2 # adb shell "pakiet dumpsys | grep -A1 'userId = 10102'”
   userId = 10102
   PKG = pakiet {46171ce com.android.chrome }
bash-4.2 #

Linia zawierająca Package{pokazywałaby nazwę pakietu aplikacji pomiędzy spacjami i }. Możesz zrobić adb shell dumpsys package PKG_NAME( PKG_NAME→ nazwa pakietu aplikacji), aby dowiedzieć się więcej o tym pakiecie / aplikacji.


Jeśli Android jest zrootowany, z poziomu powłoki adb lub aplikacji emulującej terminal, możesz:

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

W danych wyjściowych wszystko przed identyfikatorem UID jest nazwą pakietu.

Przykład:

shell @ shamu: / $ su
root @ shamu: / # cat /data/system/packages.list | grep 10102
com.android.chrome 10102 0 /data/data/com.android.chrome domyślnie 3002,3003,3001
root @ shamu: / #

Alternatywnie, jeśli masz zainstalowany Busybox lub Toybox i dostępny pod zmienną PATH, z emulatora terminala lub powłoki adb wykonaj:

su
find / data / data / -type d -group UID -maxdepth 1 | xargs basename

Przykład:

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

Ponieważ interesuje nas etykieta aplikacji, a nie nazwa pakietu, przejdź do odpowiedzi od GAThrawn lub Izzy .


Użyj, find /data/data/ -user UID -type d -maxdepth 1 | xargs basenamejeśli otrzymujesz wiele wyników w pierwszym findpoleceniu.
Firelord

To działa dla mnie bez rootowania.
Anubian Noob

5

Zainstaluj emulator terminala , uruchom go i uruchom:

ps | grep 10058

pswyświetla procesy i grepfiltry dla żądanego identyfikatora.

Ale działa to tylko wtedy, gdy aplikacja jest uruchomiona po uruchomieniu polecenia.


Próbuję tego, ale to nie działa, ponieważ taka aplikacja jeszcze nie działa
azat

6
To dotyczy PID, pytający odnosił się do UID
Lie Ryan

2
UID jest pokazany na wyjściu ps, a także PID. Wyjście ps zwykle ma wiersze takie jak „12345 app_118 ...”, gdzie 12345 to PID, a app_118 to UID (odpowiadający userId = 10118 w /data/system/packages.xml)
Art Swri

5

W powłoce ADB (lub emulatorze terminala) użyj następującego polecenia:

cat /proc/<your_process_id_here>/status

i spójrz w pole „Nazwa”. To powinna być nazwa procesu. W twoim przypadku będzie to „ cat / proc / 10058 / status


3
10058 ma być tutaj PID, podczas gdy OP dał nam UID.
Firelord

0

Miałem podobny problem z Androidem 6.0, Moto G 2. generacji od 2014 roku. Zdarzyło mi się uaktualnić aplikację ES File Explorer i zauważyłem, że jest rozdęta jak diabli i zużywa dużo baterii. Usunąłem aplikację z systemu, ale aplikacja pozwoliła procesowi zombie zajmującemu procesor. Identyfikator UID był podobny do twojego 10118 i był wymieniony w statystykach baterii jako najbardziej głodny proces zasobów.

Następnie zainstalowałem aplikację o nazwie „OS Monitor” i zauważyłem, że plik .esfm był tak naprawdę jedynym procesem zajmującym 60% procesora. Od razu wiedziałem, że ma to związek z Eksploratorem plików ES, ale poczekaj ... Miałem odinstalowany Eksplorator plików ES. Tak. Jedyne, czego nie zrobiłem, to zrestartowanie smartfona. Uwierz mi, myślałem o szalonych rzeczach, takich jak zrootowanie i pokonanie bzdur z tego procesu, rzucenie telefonem o ścianę, a nawet zacząłem wierzyć, że moja bateria wyczerpała się. Ku mojemu zaskoczeniu po prostu ponownie uruchomiłem telefon i proces zniknął.

Dlatego przed podjęciem jakichkolwiek drastycznych kroków spróbuj dowiedzieć się, która aplikacja daje zły czas, odinstaluj ją, a następnie uruchom ponownie telefon. Sprawdź w OS Monitoruj listę użycia procesora i wszystko powinno być w porządku.


0

Aby znaleźć „wszystko” według identyfikatora UID (lub GroupID) na zrootowanym telefonie, w tym uruchomionych procesów, aplikacji systemowych i czujników sprzętowych:

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

Przykład 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

Przykład 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.