Ответы:
Android назначает каждому приложению UID (идентификатор пользователя) во время установки; в отличие от PID (ID процесса), который является временным и постоянно меняется, UID остается постоянным до тех пор, пока приложение не будет переустановлено. UID должен быть уникальным для каждого приложения, за исключением случаев, когда приложение явно запрашивает совместное использование идентификатора пользователя с другим приложением (в связи с этим существуют ограничения безопасности, оба приложения должны быть подписаны одним и тем же закрытым ключом, т.е. получены от одного и того же разработчика).
Эти приложения утверждают, что показывают UID приложений:
РЕДАКТИРОВАТЬ:
Попробуйте посмотреть /data/system/packages.xml
(вам нужен root для просмотра этого файла), у каждого установленного приложения должна быть запись там. Скажем, у меня на телефоне установлен 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>
Мой телефон назначил userId="10034"
на Adobe Reader.
Для приложений, которые запросили поделиться идентификатором пользователя с другим приложением, скажите 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>
тогда атрибут, который вы ищете sharedUserId="10064"
Настройте adb на ПК, подключите устройство к ПК, запустите на ПК оболочку и введите:
adb shell "dumpsys package | grep -A1 'userId=UID'"
замещать UID
на ID, который вы ищете, например, 10102.
Пример:
bash-4.2 # adb shell "dumpsys package | grep -A1 'userId = 10102'" = 10102 идентификатор пользователя pkg = пакет {46171ce com.android.chrome } Баш-4,2 #
Строка, содержащая, Package{
будет показывать имя пакета приложения между пробелами и }
. Вы можете сделать adb shell dumpsys package PKG_NAME
( PKG_NAME
→ имя пакета приложения), чтобы узнать более подробную информацию об этом пакете / приложении.
Если Android рутирован, из оболочки adb или приложения эмулятора терминала вы можете сделать:
су cat /data/system/packages.list | grep UID
В выходных данных все, что находится перед UID, является именем пакета.
Пример:
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: / #
В качестве альтернативы, если Busybox или Toybox установлены и доступны в переменной PATH, из эмулятора терминала или оболочки adb выполните:
су найти / данные / данные / -тип d -группы UID -maxdepth 1 | xargs basename
Пример:
shell @ shamu: / $ su root @ shamu: / # find / data / data / -группа 10102 -тип d -maxdepth 1 | xargs basename com.android.chrome root @ shamu: / #
Поскольку нас интересует ярлык приложения, а не имя пакета, перейдите к ответу от GAThrawn или Izzy .
Установите эмулятор терминала , запустите его и запустите:
ps | grep 10058
ps
перечисляет процессы и grep
фильтры для идентификатора, который вы хотите.
Но это работает только в том случае, если приложение запущено при запуске команды.
В оболочке ADB (или эмуляторе терминала) используйте следующую команду:
cat /proc/<your_process_id_here>/status
и посмотрите в поле «Имя». Это должно быть название процесса. Так что в вашем случае это будет " cat / proc / 10058 / status "
У меня была похожая проблема с Android 6.0, Moto G 2nd Gen с 2014 года. Мне довелось обновить приложение ES File Explorer, и я заметил, что оно раздувалось до чертиков и высасывает много батареи. Я удалил приложение из системы, но приложение позволило зомби-процессу занять процессор. UID был похож на ваш 10118, и в статистике батареи он указан как самый голодный ресурс.
Затем я установил приложение с именем «OS Monitor» и заметил, что файл .esfm был единственным процессом, который занимал 60% процессорного времени. Я сразу понял, что это связано с ES File Explorer, но подождите ... Я удалил ES File Explorer. Да. Единственное, что я не сделал, это перезапустил смартфон. Поверьте мне, я думал о сумасшедших вещах, таких как укоренение и выход из этого процесса, бросание телефона в стену, и даже начал верить, что моя батарея достигла конца жизни. К моему удивлению, я просто перезапустил телефон, и процесс исчез.
Поэтому, прежде чем принимать какие-либо радикальные меры, попробуйте выяснить, какое приложение дает вам плохое время, удалите его и перезагрузите телефон. Проверьте на ОС Мониторинг списка загрузки процессора, и все будет в порядке.
Чтобы найти «все» по UID (или GroupID) на рутированном телефоне, включая запущенные процессы, системные приложения и аппаратные датчики:
# 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
если вы получаете несколько результатов в первойfind
команде.