如何通过UID查找应用名称?


38

在“电池历史记录”中,我发现UID为10058的应用程序正在消耗大量电池。

如何找到UID等于10058的应用程序的名称?

Answers:


32

Android在安装时为每个应用程序分配一个UID(用户ID);与PID(进程ID)是瞬态的并且始终保持变化的情况不同,只要不重新安装应用程序,UID就会保持不变。除了当应用程序明确要求与另一个应用程序共享用户ID时,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"


25

在PC上设置,将设备连接到PC,在PC上启动Shell并输入:

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

替换UID为您要查找的ID,例如10102。

例:

bash-4.2#adb shell“ dumpsys软件包| grep -A1'userId = 10102'”
   userId = 10102
   pkg = Package {46171ce com.android.chrome }
bash-4.2#

包含该行的内容Package{将在空格和之间显示应用程序的软件包名称}。您可以adb shell dumpsys package PKG_NAMEPKG_NAME→应用程序的软件包名称)来了解有关该软件包/应用程序的更多详细信息。


如果Android植根于adb shell或终端仿真器应用程序,则可以执行以下操作:

su
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默认3002,3003,3001
root @ shamu:/#

或者,如果您已经安装了BusyboxToybox并且在PATH变量下可用,请从终端仿真器或adb shell中执行以下操作:

su
查找/ data / data / -type d -group UID -maxdepth 1 | xargs基本名称

例:

shell @ shamu:/ $ su
root @ shamu:/#查找/ data / data / -group 10102 -type d -maxdepth 1 | xargs基本名称
com.android.chrome
root @ shamu:/#

由于我们对应用程序的标签而不是软件包名称感兴趣,因此请继续从GAThrawnIzzy回答。


使用find /data/data/ -user UID -type d -maxdepth 1 | xargs basename,如果你要在第一多个结果find的命令。
Firelord

这对我没有根源。
阿努比(Noubian Noob)

5

安装终端仿真器,启动它并运行:

ps | grep 10058

ps列出所需grepID 的过程和过滤器。

但这仅在运行命令时应用程序正在运行时才有效。


我尝试了这个方法,但是它不起作用,因为这样的应用程序尚未运行
azat 2011年

6
这是给PID的,询问者指的是UID
Lie Ryan

2
UID显示在ps输出以及PID中。ps输出通常具有类似于“ 12345 app_118 ...”的行,其中12345是PID,而app_118是UID(对应于/data/system/packages.xml中的userId = 10118)
Art Swri 2013年

5

在ADB Shell(或终端仿真器)中,使用以下命令:

cat /proc/<your_process_id_here>/status

并在“名称”字段中查找。这应该是进程的名称。因此,在您的情况下,它将是“ cat / proc / 10058 / status


3
OP应该给我们UID,而10058应该是此处的PID。
Firelord

0

我在2014年发布的Android 6.0 Moto G 2nd Gen上也遇到了类似的问题。我碰巧已经升级了ES File Explorer应用程序,但我发现它像地狱一样肿,消耗了大量电池。我从系统中删除了该应用程序,但是该应用程序让僵尸进程占用了CPU。UID与您的10118类似,它在电池统计信息中被列为最耗电的资源过程。

然后,我安装了一个名为“ OS Monitor”的应用程序,并注意到.esfm文件实际上是唯一占用60%CPU的进程。我立即知道它与ES File Explorer有关,但是请稍候...我已经卸载了ES File Explorer。是。我唯一没有做的就是重新启动智能手机。相信我,我正在考虑一些疯狂的事情,例如扎根和摆脱垃圾,将手机扔在墙上,甚至开始相信我的电池寿命将尽。令我惊讶的是,我只是重新启动了电话,整个过程就消失了。

因此,在采取任何严厉措施之前,请尝试找出哪个应用程序给您带来了麻烦,请先将其卸载,然后重新启动手机。检查OS Monitor的CPU使用率列表,就可以了。


0

要在有电话上通过UID(或GroupID)查找“一切” ,包括正在运行的进程,系统应用程序和硬件传感器,请执行以下操作:

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

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

例子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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.