Android16之如何获取APP、Bin进程的UID(二百六十三)
简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者
博主新书推荐:《Android系统多媒体进阶实战》🚀
Android Audio工程师专栏地址: Audio工程师进阶系列【原创干货持续更新中……】🚀
Android多媒体专栏地址: 多媒体系统工程师系列【原创干货持续更新中……】🚀
推荐1:车载系统实战课地址:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀
推荐2:HIDL与AIDL实战课地址:Android14 Binder之HIDL与AIDL通信实战课 🚀
推荐3:Android15音效实战课地址:Android15快速自定义与集成音效实战课 🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

🍉🍉🍉文章目录🍉🍉🍉
- 🌻1.前言
- 🌻2. UID是什么?
- 🌻3. 解决方案
- 🐓3.1 获取APP:com.android.music进程的UID方案
- 🐓3.2 获取Bin:audioserver进程的UID方案
🌻1.前言
本篇目的:Android16之如何获取APP、Bin进程的UID
🌻2. UID是什么?
- UID (User Identifier) 是 Android 基于 Linux 内核的安全模型中的一个整型标识符,用来区分系统中的不同“用户进程”。
- 每个 Android 应用(APK)在安装时,系统都会为其分配一个唯一的 UID(除非它与另一个应用共享同一个 UID)。
- 在Linux层面上,这个UID就是应用在系统中的“用户身份”。
🌻3. 解决方案
🐓3.1 获取APP:com.android.music进程的UID方案
方案一:计算APP的UID
# ps -ef|grep -i com.android.music
u0_a126 4903 865 0 07:21:23 ? 00:00:00 com.android.music方式一:从用户名推算出 UID(最常见方式)
在 Android 中,u0_a126的UID 对应公式为:
UID = 10000 * userId + appId而:
userId = 0(因为前缀是 u0_,即主用户 user 0)
appId = 10000 + 126 = 10126结论:com.android.music的 UID = 10126
方案二:从系统包列表中/data/system/packages.list查询
# adb shell cat /data/system/packages.list | grep com.android.music
com.android.music 10126 0 /data/user/0/com.android.music default:targetSdkVersion=30:partition=product none 0 35 1 @system结论:com.android.music的UID为:10126
方案三:查看当前运行进程的UID
# adb shell cat /proc/$(pidof com.android.music)/status | grep Uid
Uid: 10126 10126 10126 10126
🐓3.2 获取Bin:audioserver进程的UID方案
方案一:从用户名直接判断
Android 定义了一组 AID_xxx(Android ID),每个系统服务对应一个固定 UID:
| 用户名 | AID 常量名 | UID 数值 | 说明 |
|---|---|---|---|
root | AID_ROOT | 0 | 超级用户 |
system | AID_SYSTEM | 1000 | 系统核心服务 |
audioserver | AID_AUDIOSERVER | 1041 | 音频服务进程 |
mediaserver | AID_MEDIA | 1013 | 多媒体服务 |
cameraserver | AID_CAMERASERVER | 1047 | 摄像头服务 |
bluetooth | AID_BLUETOOTH | 1002 | 蓝牙守护进程 |
结论:audioserver进程的UID:为1041
方案二:用命令查看UID
# adb shell cat /proc/10469/status | grep Uid
Uid: 1041 1041 1041 1041
方案三:用id命令查看
# id audioserver
uid=1041(audioserver) gid=1041(audioserver) groups=1041(audioserver) context=u:r:su:s0
方案四:查看源码头文件
- system/core/include/private/android_filesystem_config.h
#define AID_TLSDATE 1039 /* tlsdate unprivileged user */
#define AID_MEDIA_EX 1040 /* mediaextractor process */
#define AID_AUDIOSERVER 1041 /* audioserver process */
#define AID_METRICS_COLL 1042 /* metrics_collector process */
#define AID_METRICSD 1043 /* metricsd process */
audioserver进程对应:AID_AUDIOSERVER,UID为1041。
