Magisk-V27.0 OTA升级 无“安装到未使用的槽位(OTA 后)”选项原因

870 阅读1分钟

背景

小米手机6,系统版本MIUI10.3.1(Android8),刷Magisk-V27.0后安装Shamiko提示 "安装失败,需要Android8.1+以上系统",尝试Shamiko低版本也无法解决,于是决定升级系统。参考OTA升级文档操作,发现没有 "安装到未使用的槽位(OTA 后)"选项

image.png

排查

  1. 下载Magisk-V27.0源码

  2. 查找 "安装到未使用的槽位(OTA 后)" 字符,在values-zh-rCN\strings.xml

image.png

  1. 查找 install_inactive_slot 引用位置,找到 method_inactive_slot,接着找到 InstallViewModel类

image.png

image.png

  1. 根据 noSecondSlot 字面含义,需要满足3个条件才会显示
  • 系统已root (满足)
  • 系统支持AB分区
  • 系统非模拟器(满足)
  1. 排查是否AB分区,找到manager.sh, 是否AB分区,需要满足
  • getprop ro.build.ab_update 返回 true
  • getprop ro.boot.slot_suffix 返回非空

image.png

image.png

  1. 测试这2条指令后发现都是空的

结论

这台手机应该是AB分区不满足,Magisk才不显示”安装到未使用的槽位(OTA 后)“,这种情况只能OTA升级后重新root了