Respuestas:
Android asigna a cada aplicación un UID (ID de usuario) en el momento de la instalación; A diferencia del PID (ID de proceso) que es transitorio y cambia constantemente, el UID permanece constante mientras la aplicación no se reinstale. El UID debe ser exclusivo para cada aplicación, excepto cuando la aplicación solicita explícitamente compartir un ID de usuario con otra aplicación (existen restricciones de seguridad en torno a esto, las dos aplicaciones deben estar firmadas con la misma clave privada, es decir, proviene del mismo desarrollador).
Estas aplicaciones afirman mostrar el UID de las aplicaciones:
EDITAR:
Intente mirar /data/system/packages.xml
(necesita root para ver este archivo), cada aplicación instalada debe tener una entrada allí. Digamos que tengo Adobe Reader instalado en mi teléfono:
<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>
Mi teléfono ha asignado userId="10034"
a Adobe Reader.
Para las aplicaciones que han solicitado compartir la identificación de usuario con otra aplicación, diga 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>
entonces el atributo que estás buscando es sharedUserId="10064"
Configure adb en una PC, conecte el dispositivo a la PC, inicie un shell en la PC e ingrese:
adb shell "dumpsys package | grep -A1 'userId=UID'"
Reemplace UID
con la ID que está buscando, como 10102.
Ejemplo:
bash-4.2 # adb shell "paquete dumpsys | grep -A1 'userId = 10102'" userId = 10102 pkg = Paquete {46171ce com.android.chrome } bash-4.2 #
La línea que contiene Package{
mostrará el nombre del paquete de la aplicación entre espacios en blanco y }
. Puede hacer adb shell dumpsys package PKG_NAME
( PKG_NAME
→ nombre del paquete de una aplicación) para conocer más detalles sobre ese paquete / aplicación.
Si el Android está rooteado, desde adb shell o una aplicación de emulador de terminal, puede hacer:
su cat /data/system/packages.list | grep UID
En la salida, cualquier cosa antes del UID es el nombre del paquete.
Ejemplo:
shell @ shamu: / $ su root @ shamu: / # cat /data/system/packages.list | grep 10102 com.android.chrome 10102 0 /data/data/com.android.chrome predeterminado 3002,3003,3001 root @ shamu: / #
Alternativamente, si tiene Busybox o Toybox instalado y disponible bajo la variable PATH, desde un emulador de terminal o adb shell haga:
su find / data / data / -type d -group UID -maxdepth 1 | nombre basar de xargs
Ejemplo:
shell @ shamu: / $ su root @ shamu: / # find / data / data / -group 10102 -type d -maxdepth 1 | nombre basar de xargs com.android.chrome root @ shamu: / #
Como estamos interesados en la etiqueta de la aplicación y no en el nombre del paquete, proceda con la respuesta de GAThrawn o de Izzy .
Instale un emulador de terminal , ejecútelo y ejecute:
ps | grep 10058
ps
enumera los procesos y grep
filtros para la ID que desea.
Pero esto solo funciona si la aplicación se está ejecutando cuando ejecuta el comando.
En el shell ADB (o emulador de terminal) use el siguiente comando:
cat /proc/<your_process_id_here>/status
y mira en el campo "Nombre". Este debería ser el nombre del proceso. Entonces, en su caso, sería " cat / proc / 10058 / status "
Tuve un problema similar con Android 6.0, Moto G 2nd Gen a partir de 2014. Sucedí que actualicé la aplicación ES File Explorer y noté que estaba hinchada como el infierno y estaba agotando mucha batería. Eliminé la aplicación del sistema, pero la aplicación permitió que un proceso zombie ocupara la CPU. El UID era similar al suyo 10118, y figuraba en las estadísticas de la batería como el proceso de recursos más hambriento.
Luego instalé una aplicación llamada "OS Monitor" y noté que un archivo .esfm era en realidad el único proceso que ocupaba el 60% de la CPU. Inmediatamente supe que tenía que ver con ES File Explorer, pero espera ... HABÍA desinstalado ES File Explorer. Sí. Lo único que no hice fue reiniciar el teléfono inteligente. Créeme, estaba pensando en locuras, como echar raíces y sacar el polvo de ese proceso, tirar el teléfono contra la pared e incluso empecé a creer que mi batería llegó al final de su vida útil. Para mi sorpresa, simplemente reinicié el teléfono y el proceso desapareció.
Entonces, antes de tomar medidas drásticas, intente averiguar qué aplicación le está dando un mal momento, desinstálela y luego reinicie el teléfono. Verifique en OS Monitor la lista de uso de CPU, y debería estar bien.
Para encontrar "todo" por UID (o GroupID) en un teléfono rooteado , incluidos procesos en ejecución, aplicaciones del sistema y sensores de hardware:
# 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
si obtiene múltiples resultados en el primerfind
comando.