主流 (systemless) root 方案,完全开源免费。
Installation
Magisk < v22.0 需要分别安装 Magisk 和 Magisk Manager
Magisk >= v22.0 将 Magisk 和 Magisk Manager 合二为一。提供下载的 Magisk-vXX.X.apk 即是合法的 apk,也能够直接在 Recovery 里刷入。
Magisk module
使用 Magisk Manager 管理 modules。
紧急卸载模块方法:删除模块目录 /data/adb/modules/module-name 。
Magisk Manager for Recovery Mode
在 Recovery 下管理 Magisk。
Tips
Magisk Not Installed
一些版本 Android ROM 和 / 或 Magisk 在安装 magisk 后常常在运行一段时间后提示 "Magisk Not Installed" 并失去 root 权限,重启后恢复正常。这是因为 Magisk daemon 进程因为某些原因被杀死了。
在 Android Pie (9.0) + Magisk 18 / 19 环境下经常出现。
Workaround: 安装 mgkdhelper 这个 Magisk module, 其原理是定时检测 Magisk daemon 进程是否存在,如果不存在则启动之。(Update: 测试某些设备此 workaround 无效)
Multi users
对多用户(包括 work profile 创建的用户,如 island 或多开app创建的),
需要在主用户的 Magisk Manager 里设置允许其它用户的 app 申请 root 权限。
可以选择“由主用户管理”,或选择“每个用户各自管理”并将 Magisk Manager 安装到其它用户里。
MagiskHide
MagiskHide 可以对某些应用完全隐藏 root,在大多数情况下,它几乎一定能完全工作。
在 MagiskHide 设置里对某个 app 隐藏 root 后需要重启手机以生效。
Magisk 的 MagiskHide 设置里不会列出其它用户的 apps。
禁用加密
几乎所有出厂版本 Android 5.0+ 的设备默认启用了 /data 用户分区数据的强制全盘加密 (FDE, Full disk encryption),影响性能并且增加耗电。(ARMv8以后的设备,即所有64位 arm 处理器均支持 AES 指令集,硬件加密对系统性能影响较小,一些设备的跑分测试显示关闭全盘加密后分数提高1%-2%左右)
这类设备的原厂 boot.img 的 ramdisk 里 fstab 的 /data 分区条目带有 "forceencrypt" 标记。forceencrypt 标记会使内核启动时检测 /data 加密状态,如果未加密会自动加密(设备第一次启动时或格式化后启动时)
刷入 Magisk 时可以设置移除 boot.img 里 ramdisk 的 forceencrypt 和 dm-verity。
在刷入 Magisk 之前,在 Recovery 里创建一个 /cache/.magisk 文件:
echo KEEPVERITY=false>>/cache/.magisk
echo KEEPFORCEENCRYPT=false>>/cache/.magisk
If you can't access /data (TWRP can't decrypt, etc) you can instead use either /data/.magisk or/system/.magisk, but please note that using /system/.magisk isn't systemless.
禁用 boot.img 的 forceencrypt 原理是修改 boot.img ramdisk 的 fstab,将 forceencrypt 标记替换为 encryptable。
请注意:如果 /data 已经加密,刷入(KEEPFORCEENCRYPT=false的)Magisk并不会清除已有的加密状态。清除 /data 加密状态需要格式化 /data 分区,方法是在 TWRP 里 "Format data" (this is NOT the same as Wipe data) (In TWRP: Wipe -> Format Data) 或在 fastboot 里 fastboot format userdata。
PS. 如果你不想刷 Magisk 而只想禁用 boot.img 的 forceencrypt,可以在 TWRP 里刷入 Universal DM-Verity, ForceEncrypt, Disk Quota Disablers 这个包。(其它旧工具: FED-Patcher (ForceEncrypt Disable Patcher))。
在 Magisk Manager 的 "Advanced settings" 能看到当前系统 boot.img 里的 FORCEENCRYPT 和 VERITY 状态 (这两个复选框勾选状态对应当前系统的状态,如果修改关掉 Magisk Manager 再打开会重置;勾选或取消勾选只有在通过 Magisk Manager 安装或重刷 magisk 时才有效果)。