设备所有者只能有一个:这个系统限制才是它存在的理由
很多激活失败的根子,其实在一开始就没想明白这条系统规则。
安卓怎么规定「所有者」的
设备所有者(DeviceOwner)是安卓给受管设备(Fully Managed Device)准备的最高级别管理员身份,由 dpm set-device-owner 命令设置。系统层面有三条硬规则:
- 全机唯一:设备上同时只能存在一个设备所有者,第二个应用执行设置命令必定失败;
- 条件苛刻:设置时设备上不能有任何账号、不能有多余用户(这两条正是最常见的报错来源);
- 身份持久:一旦设置成功,重启后依然生效,除非主动转移或解除。
唯一性带来的现实死结
依赖这个身份的工具不少,各自都需要「独占」它:
| 工具 | 拿设备所有者身份做什么 |
|---|---|
| Hail | 冻结、隐藏、暂停应用 |
| Amarok | 无 root 隐藏应用(重启后依然生效) |
| OwnDroid | 设备策略与限制管理 |
| Test DPC | 测试设备管理策略 |
| Aurora Store | 部分受限设备上的安装场景 |
没有中介时,你只能选一个装。想用 Hail 冻结应用、又想用 OwnDroid 管策略?装第二个的那一刻就会撞上「device owner is already set」。
中介模式怎么解这个结
让一个「中立」的应用先占住这个唯一身份,其他工具全部改为向它申请权限——同一个身份被多工具共享,冲突自然消失。这就是本站主角的全部设计动机。
理解了这条限制,再看中介授权是怎么跑通的;如果你只是在多个工具之间纠结装哪个,先读适合谁与不适合谁。