背景
小米手机6,系统版本MIUI10.3.1(Android8),刷Magisk-V27.0后安装Shamiko提示 "安装失败,需要Android8.1+以上系统",尝试Shamiko低版本也无法解决,于是决定升级系统。参考OTA升级文档操作,发现没有 "安装到未使用的槽位(OTA 后)"选项
排查
-
查找 "安装到未使用的槽位(OTA 后)" 字符,在values-zh-rCN\strings.xml
- 查找 install_inactive_slot 引用位置,找到 method_inactive_slot,接着找到 InstallViewModel类
- 根据 noSecondSlot 字面含义,需要满足3个条件才会显示
- 系统已root (满足)
- 系统支持AB分区
- 系统非模拟器(满足)
- 排查是否AB分区,找到manager.sh, 是否AB分区,需要满足
- getprop ro.build.ab_update 返回 true
- getprop ro.boot.slot_suffix 返回非空
- 测试这2条指令后发现都是空的
结论
这台手机应该是AB分区不满足,Magisk才不显示”安装到未使用的槽位(OTA 后)“,这种情况只能OTA升级后重新root了