经过了漫长的等待,Magisk 24正式版终于发布,带来了Android 12支持,于是打算给自己的主力机更新到Android 12。查了下网上的资料,尤其是中文资料不是很全面,很多内容已经过时,于是记录一下我成功升级的操作过程。
!Attention!
- 如果使用的是旧版本的Magisk,刷入Android 12打补丁后的boot.img后会无法开机,必须清除数据;但是build 23016已解决此问题,Magisk 24正式版无需清除数据,但是跨版本升级可能会遇到bug(比如我),所以我个人仍建议清除
- 我的设备为Android 11(已装Magisk)升Android 12,以下教程以Google Pixel官方镜像为例,请根据自己的实际情况做出调整
前期准备
- 下载正确版本的镜像并核对SHA-256,确认无误后解压,提取boot.img
- 下载Platform Tools,为了使用adb和fastboot,尽量使用最新版本
- 下载并安装USB驱动,否则系统无法识别fastboot模式下的手机
- 备份手机上所有你认为重要的文件,虽然理论上升级不会丢失数据
操作前
- 更新Magisk app及Magisk至最新稳定版,当前为24.1,重启
- 用Magisk app给boot.img打补丁,保存生成的文件magisk_patched-24100_xxxxx.img(后几位是随机字符,xxxxx仅为代指)至电脑
- 禁用所有EdXposed模块,重启。因为EdXposed未对Android 12做兼容,可能出现问题。LSPosed已兼容,但我未测试
- 在Magisk中禁用EdXposed及其他可能不兼容的模块,重启
- 更新Riru(因为EdXposed不支持Riru26,之前没有更新,但是为了兼容性,最好在升级前更新),重启
- 将镜像解压得到的所有文件、Platform Tools解压得到的所有文件、magisk_patched-24100_xxxxx.img放在同一目录下,为了防止系统内存在多个adb及fastboot引发问题,我们所有操作均在该目录下进行
- 如果不想丢失数据,修改flash-all.bat(Linux系统修改flash-all.sh),把fastboot命令后面的-w去掉,否则升级会清除数据
开始操作
- 确保手机bootloader已解锁并开启USB调试(未解锁的自己搜索解锁方法),连接电脑
- 在当前目录下启动power shell,以下命令全部在powershell中执行
./adb devices
- 会显示设备ID。如果该设备是第一次在这个电脑使用,需要在手机上允许调试,然后再次运行该命令
- 如果不报错也找不到设备,换根线或者换个USB接口
- 如果你用的是cmd不是powershell,必须把“/”换成“\”,powershell二者均可
./adb reboot bootloader
- 手机会重启进入bootloader,不要操作手机
./fastboot devices
- 这一步是为了检查连接是否正常,注意此时adb devices是识别不到设备的
- 如果fastboot找不到设备,请确认USB驱动已正确安装,正常情况下,设备管理器中应显示Android Bootloader Interface
./flash-all.bat
- 如果不想丢失数据,执行前请务必确认-w已删除
- 等待脚本运行完毕,一般需要几分钟时间,期间一定不要断开连接或关闭窗口
- 脚本运行完毕后,手机会自动重启,等待升级完成,正常进入系统,此时系统是没有root的
./adb reboot bootloader
- 再次进入bootloader,不要操作手机
./fastboot flash boot magisk_patched-24100_xxxxx.img
- 刷入打补丁的boot.img
- 刷入完成后,在bootloader界面选择Start,手机启动
- 如果一切正常,此时手机已经正常升级,并保留了数据和Magisk
FAQ
- bootloop了怎么办?
- 根据官网的方法移除或禁用所有模块
- 我遇到了蜜汁bug,第一次刷打补丁的boot.img正常,装模块以后bootloop,然后卸载模块依然bootloop,最后只好wipe data重刷之后解决。
文章评论