系统要求

  1. 系统版本最好是Android 8以上
  2. 手机具备root权限
  3. 在系统“设置-附加设置-开发者选项”中,启用“USB调试(安全设置)”。
  4. 在系统“设置-权限-自动启动”中,启用“炼妖壶”。(授予自动启动权限)
  5. 下载并安装炼妖壶软件
  6. 下载并安装Termux软件

创建工作分区

打开Termux,获取root权限

1
su

创建island工作区ID

1
pm create-user --profileOf 0 --managed Island

如果成功,系统会提示成功并创建新的用户 ID,记住这个ID

如果提示couldn’t create User

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查询最大用户数量
pm get-max-users

# 设置ro.debuggable为调试模式
resetprop ro.debuggable 1

# 将系统控制最大用户数量限制改为999999999
setprop persist.sys.max_profiles 999999999

# 重启设备
am restart

# 修改最大用户数量为999999999
setprop fw.max_users 999999999

在刚刚创建的工作分区中安装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
2
3
4
pm install-existing --user <user id> <应用包名>

# 比如安装微信
pm install-existing --user 10 com.tencent.mm

效果展示

常见问题

将控制扩展至“界外”

非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
<?xml version=’1.0’ encoding=’utf-8’ standalone=’yes’ ?>

确保新创建的 profile_owner.xml 具有系统的所有者和组。 (如果创建为用户“system”应该没问题)

进入系统设置-设备管理,启用“Island”

然后重启手机

解决开机不自启分区的问题

用MT文件管理器,在路径data/adb/service.d/路径下创建0000.sh,长按文件,把属性权限全部勾选改成777,然后编辑文件,下面的sleep是开机后的等待时间,可适当延迟

1
2
3
4
5
6
sleep 10
am start-user 10
am start-user 11
am start-user 12
am start-user 13
am start-user 999

卸载 Island

在卸载 Island 之前需要打开 Island,去设置中找到创建的界,选择彻底销毁

参考文献: