Android16之如何获取APP、Bin进程的UID(二百六十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者

博主新书推荐:《Android系统多媒体进阶实战》🚀
Android Audio工程师专栏地址:Audio工程师进阶系列原创干货持续更新中...... 】🚀
Android多媒体专栏地址:多媒体系统工程师系列原创干货持续更新中...... 】🚀
推荐1:车载系统实战课地址:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀
推荐2:HIDL与AIDL实战课地址:Android14 Binder之HIDL与AIDL通信实战课 🚀
推荐3:Android15音效实战课地址:Android15快速自定义与集成音效实战课 🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
更多原创,欢迎关注:Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

    • 🌻1.前言
    • [🌻2. UID是什么?](#🌻2. UID是什么?)
    • [🌻3. 解决方案](#🌻3. 解决方案)
      • [🐓3.1 获取APP:com.android.music进程的UID方案](#🐓3.1 获取APP:com.android.music进程的UID方案)
      • [🐓3.2 获取Bin:audioserver进程的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

cpp 复制代码
# 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查询

cpp 复制代码
# 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

cpp 复制代码
# 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

cpp 复制代码
# adb shell cat /proc/10469/status | grep Uid
Uid:	1041	1041	1041	1041

方案三:用id命令查看

cpp 复制代码
# id audioserver
uid=1041(audioserver) gid=1041(audioserver) groups=1041(audioserver) context=u:r:su:s0

方案四:查看源码头文件

  • system/core/include/private/android_filesystem_config.h
cpp 复制代码
#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。

相关推荐
科技道人2 天前
Android16 默认第三方Launcher为主桌面
android16·默认laucnher
fangzhanpeng1685 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心7 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u01030552713 天前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u01030552713 天前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝15 天前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u01030552715 天前
Java图像处理实战指南
人工智能·1024程序员节
u01030552715 天前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u01030552718 天前
Java实用类应用精讲
人工智能·1024程序员节
u01030552718 天前
Java I/O核心操作实战
人工智能·1024程序员节