Android 多用户多空间的机制漫谈

Android 系统的迭代速度,体现在大版本的变化上的话,显然截至目前的后半程要远快于前半程。从 Android 5 开始,就引入了对工作需要在 Android 平台上的支持,使得原本是最终用户个人需求独占的设备,另辟出了一个部分被其所属组织支配。从而设备也进入到了一个被部分甚至后来的完全程度上的管控(managed)状态。

再往后,Android 一发而不可收拾,单台 Android 设备开始像 Windows 一般支持多用户(multiple users),此处的 user 是从真实使用者(一般也就是指真人,real person)而言的,与系统底层技术层面的 user 虽有关联但并不相同,通常后者是前者的实现支撑。即使是活人用户,也随着需求的发展,不断延伸出不同的角色,Android 系统对它们进行了不同程度的内置支持实现,如来宾(guest)用户,演示(demo)用户等等。

在前期,常见的情况是用户的个人设备要支持组织的需要,所以个人是设备的所有者。因此上,即便创建了工作资料(work profile,也叫 managed profile),但设备初始化时的第一使用者(个人本人)也往往已经在第一时间就顺理成章地取得了设备最大的管理权。在此情形下,此设备所处的状态可称之为 BYOD(Bring your own device)。在后期,则又衍变出了设备本身由组织提供、个人领用的情况,这样一来,尽管手机上还是 personal profile 和 work profile 双峰对峙的局面,但事实的最高控制权已经易手,这样的设备状态被 Google 定义为 full managed(完全管控)。

work profile 的作用是为用户(从真实的人角度)的另一个身份,而并不是另一个用户,因此它虽然是一个独立的执行环境,但是又是与用户的个人资料相伴生的,诸如锁屏、通知这些,甚至在启动器里的入口,都和个人资料基本是平等的位置。据此而推断,如果设备支持多用户的话,是不是当设备切换到另外的用户下时,该用户也可以拥有属于自己的 work profile?三太爷开始也是这么认为的,经过测试(Pixel 4 之 Android 12 以及 Pixel 4 XL 之 Android 13)发现行不通。后添加的用户跟主用户的主要区别就在于主用户是管理员身份,此身份为系统自动授予,且在系统的设置里没有找到可以由主用户为后创建的用户授予管理员身份的开关,只有一个允许其使用电话呼叫和短信功能的开关(默认关闭)。

也就是说截止到现在(Android 13),一台设备上只能有一个 work profile 存在。不过这里不存在技术上的难度,只是复杂度的问题,只要 Google 愿意,将来为非管理员用户增加对 work profile 的支持也并不奇怪。甚至为一个用户增加可以同时存在不止一个 work profile 也不是不可能,但显然只能有一个处于活动状态。

在前期,Google 的基础设施不太完善的情况下,官方有过一个 DPC 计划,允许实体向 Google 提出申请加入。所谓 DPC,就是 Device Policy Controller,是得到官方认证许可的、第三方开发者为 Android 设备提供的设备管理控制应用。到后来,Google 官方推出了 Android Device Policy 工具,并终止了 DPC 计划。我一直记得的 Device Policy Controller 这一术语,在文档等处被更新为了 Device Policy Client。这里面发生的最大不同就是,根据用户身份对系统行为进行策略调整落实的实施者,从一开始允许第三方的 app 直接操作进入到了半强制归流到由 Google 自家的 Android Device Policy 代为处理,需求者只要配置合适的规则下发到终端设备即可。

本文标题中的“空间”一词,主要是在语义上对应 profile 这个词,毕竟如果写作“资料”的话,就太难懂了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注