利用Android for work原理实现系统级无限多开
系统要求
- 系统版本最好是Android 8以上
- 手机具备root权限
- 在系统“设置-附加设置-开发者选项”中,启用“USB调试(安全设置)”。
- 在系统“设置-权限-自动启动”中,启用“炼妖壶”。(授予自动启动权限)
- 下载并安装炼妖壶软件
- 下载并安装Termux软件
创建工作分区
打开Termux,获取root权限
1 | su |
创建island工作区ID
1 | pm create-user --profileOf 0 --managed Island |
如果成功,系统会提示成功并创建新的用户 ID,记住这个ID
如果提示couldn’t create User
1 | 查询最大用户数量 |
在刚刚创建的工作分区中安装island
1 | pm install-existing --user <user id> com.oasisfeng.island |
将刚刚创建的工作分区的配置文件所有权授予Island的设备管理器接收器
1 | dpm set-profile-owner --user <user id> com.oasisfeng.island/.IslandDeviceAdminReceiver |
切换到指定的工作分区
1 | am start-user <user id> |
安装软件
1 | pm install-existing --user <user id> <应用包名> |
效果展示
常见问题
将控制扩展至“界外”
非root方法
首先删除系统“设置”-“帐户”中的所有帐户,然后执行命令:
1 | dpm set-profile-owner --user 0 --name Mainland com.oasisfeng.island/.IslandDeviceAdminReceiver |
如果收到错误消息“… Not allowed to set the profile/device owner because there are already some accounts on the device”,确保所有帐户均已删除。可以使用 ADB 命令 dumpsys account|grep -A 3 Accounts:
显示剩余帐户(包括某些设备上隐藏的帐户)
root方法
重要提示:仅当无法使用上述非 root 方法时才使用此方法。目前这还是实验性的,可能会面临与非 root 方法不同的体验
su 到 root shell 中的“系统”用户:
1 | su system |
在 /data/system/users/0
中创建一个XML文件 profile_owner.xml
,内容如下:
1 |
确保新创建的 profile_owner.xml
具有系统的所有者和组。 (如果创建为用户“system”应该没问题)
进入系统设置-设备管理,启用“Island”
然后重启手机
解决开机不自启分区的问题
用MT文件管理器,在路径data/adb/service.d/
路径下创建0000.sh
,长按文件,把属性权限全部勾选改成777,然后编辑文件,下面的sleep是开机后的等待时间,可适当延迟
1 | sleep 10 |
卸载 Island
在卸载 Island 之前需要打开 Island,去设置中找到创建的界,选择彻底销毁
参考文献:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 川少博客!