Come posso trovare il nome dell'app tramite UID?


39

Nella "cronologia della batteria" ho scoperto che l'app con UID 10058 utilizza molta batteria.

Come posso trovare il nome dell'app con UID uguale a 10058?

Risposte:


32

Android assegna a ciascuna applicazione un UID (ID utente) al momento dell'installazione; a differenza del PID (Process ID) che è temporaneo e continua a cambiare continuamente, l'UID rimane costante fintanto che l'applicazione non viene reinstallata. L'UID deve essere univoco per ciascuna applicazione, tranne quando l'applicazione richiede esplicitamente di condividere un ID utente con un'altra applicazione (esistono delle limitazioni di sicurezza, le due applicazioni devono essere firmate con la stessa chiave privata, ovvero provengono dallo stesso sviluppatore).

Queste applicazioni affermano di mostrare l'UID delle applicazioni:

MODIFICARE:

Prova a guardare /data/system/packages.xml(hai bisogno di root per visualizzare questo file), ogni applicazione installata dovrebbe avere una voce lì. Supponiamo che Adobe Reader sia installato nel mio telefono:

<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>

Il mio telefono ha assegnato userId="10034" ad Adobe Reader.

Per le applicazioni che hanno richiesto la condivisione dell'ID utente con un'altra applicazione, dire 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>

quindi l'attributo che stai cercando è sharedUserId="10064"


26

Imposta in un PC, collega il dispositivo al PC, avvia una shell sul PC ed inserisci:

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

Sostituisci UIDcon l'ID che stai cercando, ad esempio 10102.

Esempio:

bash-4.2 # adb shell "pacchetto dumpsys | grep -A1 'userId = 10102'"
   userId = 10102
   pkg = Pacchetto {46171ce com.android.chrome }
bash-4.2 #

La riga contenente Package{mostrerebbe il nome del pacchetto dell'app tra spazi bianchi e }. Puoi fare adb shell dumpsys package PKG_NAME( PKG_NAME→ il nome del pacchetto di un'app) per conoscere maggiori dettagli su quel pacchetto / app.


Se Android è rootato, dalla shell adb o da un'app di emulazione terminale, puoi fare:

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

Nell'output, tutto ciò che precede l'UID è il nome del pacchetto.

Esempio:

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: / #

In alternativa, se Busybox o Toybox sono installati e disponibili sotto la variabile PATH, da un emulatore di terminale o da una shell adb :

su
find / data / data / -type d -group UID -maxdepth 1 | Nome base xargs

Esempio:

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

Poiché siamo interessati all'etichetta dell'app e non al nome del pacchetto, procedi con la risposta di GAThrawn o di Izzy .


Utilizzare find /data/data/ -user UID -type d -maxdepth 1 | xargs basenamese si ottengono più risultati nel primo findcomando.
Firelord

Questo funziona per me senza root.
Anubian Noob,

5

Installa un emulatore di terminale , avvialo ed esegui:

ps | grep 10058

pselenca i processi e i grepfiltri per l'ID desiderato.

Questo funziona solo se l'applicazione è in esecuzione quando si esegue il comando.


Ci provo, ma non funziona, perché tale app non è già in esecuzione
azat

6
Questo è per PID, il richiedente si riferiva a UID
Lie Ryan,

2
L'UID è mostrato nell'output ps e nel PID. L'output ps in genere ha linee come '12345 app_118 ...' dove 12345 è il PID e app_118 è l'UID (corrispondente a userId = 10118 in /data/system/packages.xml)
Art Swri

5

Nella shell ADB (o nell'emulatore di terminale) utilizzare il comando seguente:

cat /proc/<your_process_id_here>/status

e cerca nel campo "Nome". Questo dovrebbe essere il nome del processo. Quindi nel tuo caso sarebbe " cat / proc / 10058 / status "


3
10058 dovrebbe essere il PID qui mentre OP ci ha fornito UID.
Firelord

0

Ho avuto un problema simile con Android 6.0, Moto G 2nd Gen dal 2014. Mi è capitato di aver aggiornato l'applicazione ES File Explorer e ho notato che era gonfio da morire e che stava succhiando molta batteria. Ho rimosso l'applicazione dal sistema, ma l'applicazione ha permesso a un processo di zombi di occupare CPU. L'UID era simile al tuo 10118 ed era elencato nelle statistiche della batteria come il processo di risorse più affamato.

Quindi ho installato un'app chiamata "OS Monitor" e ho notato che un file .esfm era in realtà l'unico processo che occupava il 60% della CPU. Sapevo immediatamente che aveva a che fare con ES File Explorer, ma aspettavo ... Avevo disinstallato ES File Explorer. Sì. L'unica cosa che non ho fatto è stato riavviare lo smartphone. Credetemi, stavo pensando a cose folli, come fare il root e battere la merda da quel processo, gettare il telefono contro il muro e persino iniziare a credere che la mia batteria abbia raggiunto la fine della vita. Con mia sorpresa, ho semplicemente riavviato il telefono e il processo era sparito.

Quindi, prima di prendere qualsiasi misura drastica, prova a capire quale app ti sta dando un brutto momento, disinstallala e quindi riavvia il telefono. Controlla su OS Controlla l'elenco di utilizzo della CPU e dovresti andare bene.


0

Per trovare "tutto" da UID (o GroupID) su un radicato telefono, inclusi i processi in esecuzione, le applicazioni di sistema e sensori hardware:

# ID=3011; find / -group $ID -o -user $ID   2>/dev/null

Esempio 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

Esempio 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.