46 votos

Cómo saber el nombre de la aplicación por UID

He encontrado que UID=10058 usando la batería mucho en el "historial de la batería"
Cómo puedo saber el nombre de la aplicación por UID=10058

35voto

Firelord Puntos 161

Requisitos previos : establecer adb en un PC, conectar el dispositivo al PC, lanzar un shell en el PC para introducir los comandos adb.

Nota :

  • Sustituir UID siempre que aparezca en los siguientes comandos con el UID que estás buscando.
  • Los comandos de abajo sólo proporcionarían el nombre del paquete de la app correspondiente a su UID. Para obtener la etiqueta/nombre de la aplicación después de obtener el nombre del paquete, puedes utilizar mi respuesta aquí o de GAThrawn's o de Izzy's .

Para Android 8.x y superior

Introduce el comando:

adb shell cmd package list packages --uid **UID**
adb shell pm list packages --uid **UID**                 # alternative command

Ejemplo:

$ adb shell pm list packages --uid **10250**
package:**com.adobe.scan.android** uid:**10250**

Para Android 7.x y superior

Introduce el comando:

adb shell "cmd package list packages -U | grep **UID**"
adb shell "pm list packages -U | grep **UID**"           # alternative command

Ejemplo:

$ adb shell "cmd package list packages -U | grep **10247**"
package:**dev.ukanth.ufirewall** uid:**10247**

Para cualquier versión de Android (probado desde Android 4.2.1 hasta 10.0)

Introduce el comando:

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

Puede tardar unos segundos en imprimir la salida deseada.

Ejemplo:

$ adb shell "dumpsys package | grep -A1 'userId=**10102**'"
   userId=**10102**
   pkg=Package{46171ce **com.android.chrome**}

La línea que contiene Package{ mostraría 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.


Para las versiones rooteadas de Android

Si el Android está rooteado, que usar adb shell o una aplicación de emulador de terminal que puedas hacer:

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

En la salida, todo lo que precede al UID sería 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 default 3002,3003,3001

Alternativamente Si has Busybox o Caja de juguetes instalado y disponible en la variable PATH, que desde un emulador de terminal o adb shell hacer:

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

Ejemplo:

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

0 votos

Esto me funciona sin Root.

34voto

Lie Ryan Puntos 15629

Android asigna a cada aplicación un UID (User ID) en el momento de la instalación; a diferencia del PID (Process ID) que es transitorio y cambia todo el tiempo, el UID permanece constante mientras la aplicación no se reinstale. El UID debe ser único para cada aplicación, excepto cuando la aplicación solicita explícitamente compartir un userid con otra aplicación (hay restricciones de seguridad en torno a esto, las dos aplicaciones deben ser firmadas con la misma clave privada, es decir, viene del mismo desarrollador).

Estas aplicaciones pretenden mostrar el UID de las aplicaciones:

EDITAR:

Intenta buscar en /data/system/packages.xml (necesitas Root para ver este archivo), cada aplicación instalada debería tener una entrada allí. Por ejemplo, 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 el ID de usuario con otra aplicación, digamos 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 buscas es sharedUserId="10064"

5voto

Snark Puntos 289

Instalar un emulador de terminal , lánzalo y ejecútalo:

ps | grep 10058

ps enumera los procesos y grep filtros para el ID que desee.

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

0 votos

Intento esto, pero no funciona, porque dicha aplicación no se está ejecutando

6 votos

Esto es para el PID, el preguntante se refería al UID

2 votos

El UID se muestra en la salida ps así como el PID. La salida ps suele tener 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)

5voto

Chahk Puntos 15796

En el shell de ADB (o en el emulador de terminal) utilice el siguiente comando:

cat /proc/<your_process_id_here>/status

y busque en el campo "Nombre". Este debe ser el nombre del proceso. Así que en su caso sería " cat /proc/10058/status "

3 votos

10058 se supone que es el PID aquí mientras que OP nos dio UID.

1voto

eev2 Puntos 101

Tuve un problema similar con Android 6.0, Moto G 2nd Gen de 2014. Resulta que había actualizado la aplicación ES File Explorer y me di cuenta de que estaba hinchada como un demonio y chupaba mucha batería. Quité la aplicación del sistema, pero la aplicación dejó un proceso zombi ocupando CPU. El UID era similar al tuyo 10118, y aparecía en las estadísticas de la batería como el proceso más hambriento de recursos.

Entonces instalé una aplicación llamada "OS Monitor" y me di cuenta de que un archivo .esfm era 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 smartphone. Créanme, estaba pensando en cosas locas, como ir a Root y darle una paliza a ese proceso, tirar el teléfono contra la pared, y hasta 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ó.

Así que antes de tomar cualquier medida drástica, intenta averiguar qué aplicación te está dando problemas, desinstálala y reinicia el teléfono. Comprueba en OS Monitor la lista de uso de la CPU, y deberías estar bien.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X