Odpowiedzi:
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"
Skonfiguruj adb na komputerze, podłącz urządzenie do komputera, uruchom powłokę na komputerze i wprowadź:
adb shell "dumpsys package | grep -A1 'userId=UID'"
Zamień UID
na 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 .
Zainstaluj emulator terminala , uruchom go i uruchom:
ps | grep 10058
ps
wyświetla procesy i grep
filtry dla żądanego identyfikatora.
Ale działa to tylko wtedy, gdy aplikacja jest uruchomiona po uruchomieniu polecenia.
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 ”
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.
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
# 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
jeśli otrzymujesz wiele wyników w pierwszymfind
poleceniu.