3.Android多用户
Android4.2开始支持多用户。Linux的uid/gid多用户体系已经被用在App管理上了,所以android重新开发了一套多用户体系,在UserManagerService中管理,PackageManagerService和ActivityManagerService中也有相关逻辑。Android的多用户可以做到不同用户的应用的物理文件级(数据)的区分,以实现不同用户有不同的壁纸、密码,以及不同的应用等。本文不展开多用户的机制,只集中于uid。
先看一下在多用户下,应用的uid怎么变化。
在一个有两个用户(用户id分别为0和10)的安卓设备上,在用户10下安装一个应用,此时,在0下是看不到这个应用的。
从packages.xml查看此应用的uid:userId=”10078”
Process.myUid()得到uid为”1010078”
Process.myUserHandle()得到”userHandle{10}”
在另一个用户0下安装此应用。
查看packages.xml,看到uid没有变化10078
Process.myUid()得到uid为”10078”
Process.myUserHandle()得到”userHandle{0}”
adb shell进入命令行,分别查看data/user/0和data/user/10下面此应用的数据区:
用户0:
用户10:
可以看到,实际上应用在内部虽然有多用户,但只有一个uid,在不同的用户下,通过uid和用户id合成一个新的uid,以保证在每个用户下能够区分。
android.os.UserHandle这个类对外提供有关多用户的接口。
从里面的一些api代码可以看到uid在多用户下的处理逻辑
Android下uid与多用户释疑(二)
最新推荐文章于 2025-08-11 22:52:11 发布
