¿Cómo puedo encontrar el nombre de la aplicación por UID?

39

En el "historial de la batería" he encontrado que la aplicación con UID 10058 está usando mucha batería.

¿Cómo puedo encontrar el nombre de la aplicación con UID igual a 10058?

azat
fuente

Respuestas:

32

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"

Lie Ryan
fuente
26

Configure 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 UIDcon 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 .

Señor del fuego
fuente
Úselo find /data/data/ -user UID -type d -maxdepth 1 | xargs basenamesi obtiene múltiples resultados en el primer findcomando.
Señor del fuego
Esto funciona para mí sin root.
Anubian Noob
5

Instale un emulador de terminal , ejecútelo y ejecute:

ps | grep 10058

psenumera los procesos y grepfiltros para la ID que desea.

Pero esto solo funciona si la aplicación se está ejecutando cuando ejecuta el comando.

Snark
fuente
Intento esto, pero no funciona, porque esa aplicación aún no se está ejecutando
azat
66
Esto es para PID, el autor de la pregunta se refería a UID
Lie Ryan
2
El UID se muestra en la salida ps, así como el PID. La salida ps generalmente tiene líneas como '12345 app_118 ...' donde 12345 es el PID y app_118 es el UID (correspondiente a userId = 10118 en /data/system/packages.xml)
Art Swri
5

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 "

Chahk
fuente
3
Se supone que 10058 es el PID aquí, mientras que OP nos dio el UID.
Señor del Fuego
0

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.

dbarros
fuente
0

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

Ejemplo 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

Ejemplo 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
Alec Istomin
fuente