本篇博客主要记录一下Android中UID的含义,并简单分析应用appId的分配流程。
1、UID
Android是支持多用户的操作系统,其中进程对应的UID由用户ID和应用ID共同决定。
我们来看看UserHandle.java的代码:
public static int getUid(@UserIdInt int userId, @AppIdInt int appId) {
//支持多用户时
if (MU_ENABLED) {
//userId * 100000 + (appId % 100000)
return userId * PER_USER_RANGE + (appId % PER_USER_RANGE);
} else {
return appId;
}
}
在android手机上,我们利用adb shell执行ps命令后,可以看到如下信息:
从图中可以看出,其中第一项将显示进程对应的UID。
这里截取的两个进程为root组的,没有分配具体的编号。
对于用户组的进程来说,如上图所示,会显示类似于u0_a86这样的UID。
这