小米MIX4刷欧版MIUI的踩坑实录

懂不懂欧盟GDPR的含金量啊?(战术后仰)

Posted by Zhang Shuyang on April 30, 2022

前言

好家伙,距离上次更新博客又过去一年了,真的是光阴似箭日月如梭,今天记录一下大约半个多月前我给小米MIX4安装欧洲版MIUI,并解决欧版系统没有小米钱包无法给NFC地铁卡充值问题的记录,如果能帮助到其他想刷机/换机的朋友,那就更好啦。

为什么选择小米MIX4

众所周知,电子产品买新不买旧,2022年4月购买小米在2021年8月发布的机型,确实有点奇怪,为什么会选择这款手机呢?我的上一个手机是vivo的NEX,也就是第一款采用了前置相机升降设计的“真”全面屏手机,购买于2018年9月,距今已接近四年,不吹不黑,我在用vivo的手机之前,我对这个品牌的刻板印象就是“高价低配”“厂弟厂妹机”,实际上手使用之后还是不错的,真全面屏,颜值高,无壳无膜裸奔3年多摔了几次,屏幕完好无损,续航也不错(至少前两年可以无压力续航1天),换机的直接原因是去年10月骑车去了一趟十三陵,那是我第一次骑自行车跑70多公里,没经验,本来手机放口袋里或者书包里,其实一点事都没有,我也不知道自己当时是咋想的,来了一波骚操作————把手机放到了梁包里……其实放梁包里估计也不是什么大问题,十三陵水库旁边有个陡坡,我爬坡为了省劲,把前叉锁了,结果下坡忘了解锁了,好家伙,颠了一路,回家手机屏幕和底盖的封胶已然完全脱落,手机和主板PCB的最大夹角已经成了直角,加上续航也越来越拉垮,真的不换不行了。
但是视觉上习惯了全面屏之后,挖孔和刘海的设计是真的很难接受了,于是就只想换全面屏或非异形屏,决赛圈的选择如下:小米MIX4、苹果SE3、索尼xperia1III、红魔7pro。分别阐述:
mix4的主要问题是发布时间过于久远,已经过去将近1年了,而且soc是臭名昭著的大火龙888plus,曲面屏易碎中看不中用易,优点是陶瓷机身,有线120w无线100w充电,懂不懂早晨起来刷个牙电就充好了的含金量呀?(战术后仰)
苹果se3的主要问题是单卡,所以长期使用双卡的用户切换过来会很难受,必须放弃一张卡或者使用备机,下来就是苹果祖传的15w充电速度和拉垮的续航(2000mA)可能很难坚持一天,优点也很明显,ios封闭且比较优秀的软件生态,和airpods、applewatch等设备的无感联动,以及性能满满的A15芯片,但最终还是因为单卡+充电速度太慢没有考虑。
索尼的mark3就不说了,懂的都懂,好看是真的好看,难用是真的难用,而且众所周知,“索尼大法好”这句话后面还有一句话叫“索尼手机除外”,不得不说索尼家的相机、PS、电视都能做的这么好为啥就是做不好手机呢?价格也是相当贵,我8000买个sony我为啥不买13pro啊,真的就是那句话“你买我推荐,我买我不买”,懂得都懂嗷。
红魔7pro这机器最大的问题是游戏的定位是个游戏手机,但是呢我是不玩手机游戏的(当然普林塞斯克耐克斗除外),而且这手机没有nfc实在是没法接受。 所以我选择了雷猴王,选择了小米,选择了一款老旗舰MIX4,买的晚还真不是什么坏事,并夕夕百亿补贴直接降价2200,好家伙,舒服。

为什么选择刷欧版MIUI

如果说的文艺点,叫做注重信息安全和隐私保护,因为在欧盟地区销售的机器是要遵守欧盟的GDPR条款的,所以系统内部对权限的管控非常严格,而且系统的纯净程度也比较高,没有任何广告,没有内置一些没(liu)用(mang)的应用,用起来会比较舒服。但是也因此导致一些问题————没有小米钱包导致没法给手机nfc绑定的公交卡充值,为了解决这个问题,还需要对系统进行一些操作,后面章节会详细介绍。很喜欢李彦宏的一句话:“__总喜欢用去换__”,懂的都懂,橘生淮北则为枳。

一些提醒

刷机有风险,操作需谨慎。话虽如此说,但是在现在这个时代,想把手机刷成砖还是挺难的,因为我们的所有操作都是基于Fastboot去操作的(或基于TWRP来操作),而Fastboot就相当于PC里的bios,只要我们不随便去刷bios,只是对操作系统进行一些折腾,一般是很难把手机/电脑给刷成砖的,所以没刷过机想尝试的朋友,千万不要害怕,DIY最需要的就是勇气,但是也请做好最坏的思想准备,刷机前务必备份自己重要的数据,并且默认这台机器变砖头的风险。(聊到这里我想起我刚刚入坑EVE这个游戏的时候,我们军团教官给我的忠告:永远不要开太贵的船出门————你的船的造价不应该超过你总资产的1/3,留好东山再起的资本;并且当你把船开出空间站的那一刻,就默认她已经爆了,她已经离你而去了,如果你今天足够幸运,你在战斗中没有爆船而是平安的返回了空间站,你就当你捡了艘船,这是上天对你在战斗前提前侦查敌情并且在PVP中优秀表现的馈赠)

step1 解锁BL

BL即为BootLoader,它是手机安全启动中比较底层的一环,它会在启动的时候验证加载对象的签名,防止第三方ROM或Recovery的启动,避免由此带来的安全风险。BL是防止手机被恶意刷机的第一道防线。
因此解锁BL就成为了通过Fastboot刷机的必要前提,而目前很多厂商都是不支持用户自行解锁BL的,比如华为、oppo、vivo等,而支持解锁的国内厂商现在仅剩下小米、oneplus和魅族的部分机型,因此想刷机的话,一定要提前了解清楚该机型是否可以解锁BL。
对于小米手机而言,如果是新手机,需要先绑定小米账号,并且等待168小时后才能解锁(我理解这里等待7天的原因是防止部分用户刷机之后利用7天无理由退货的政策恶意退货),所以我的手机在买到手之后,默默地在我的抽屉里躺了7天……
解锁的步骤如下:

  1. 备份手机数据,BL 解锁会清除手机数据,有数据的先做好备份
  2. 手机已插入 SIM 卡,关闭 WiFi 连接,启用数据联网方式
  3. 依次点击 手机设置 -> 我的设备 -> 全部参数 -> 连续点击几次“MIUI 版本” 打开开发者选项
  4. 依次点击 手机设置 -> 更多设置 -> 开发者选项 -> 设备解锁状态 -> 绑定帐号和设备
  5. 如果是新机,需在绑定帐号后保持使用 7 天,期间不要退出小米帐号,以满足解锁条件
  6. 将手机与电脑连接一次,让电脑安装好驱动(如果安装失败,可下载 MiFlash 再手动安装)
  7. 将手机关机,按住音量下键 + 开机键进入 Fastboot 模式,之后用数据线连接到电脑
  8. 电脑下载小米解锁工具,解压后运行里面的 miflash_unlock.exe 文件,按提示登录小米帐号,点击解锁,解锁后重启手机
  9. 到此,BL 解锁就完成了

这里需要进行一点说明,如果小米手机刷非国行的ROM,比如欧洲版的MIUI,请千万不要在刷机完毕后锁定BL

step2 下载欧版MIUI的ROM安装包

  1. 去MIUI欧洲的官网: https://xiaomi.eu/community/
  2. 可以看到上方的分页有 MIUI13 weekly的rom 和 stable的rom,如果想稳定图省事就选择stable稳定版,而如果想尝鲜可以选择weekly开发版
  3. 进入之后会发现有一张表格,如下,在ROM Name列找到自己的机型,比如MIX4,然后记住对应的Codename(codename即小米内部对该机型的代号),比如MIX4的代号就是odin(好家伙,奥丁,让我想到了8.0的狂暴战啊,不听不听战吼奥丁,嗯,然后怪全ot了释放灵魂)
  4. 记住代号之后,去miui.eu的官方sourceforge仓库下载安装包,可以用CTRL+F检索,部分包的名称是用机型代替的,部分是用开发代号代替的,可以都检索一下,注意要找fastboot名字结尾的包,比如我刷的是xiaomi.eu_multi_MIX4_V13.0.4.0.SKMCNXM_v13-12-fastboot.zip

step3 连接手机,并将手机进入Fastboot模式

  1. 先将手机关机
  2. 同时按住音量-开机键,等待屏幕上显示FASTBOOT字样即代表已进入fastboot模式
  3. 将手机用数据线连接至电脑,电脑的操作系统可以是 Windows、Linux或Macos (什么?你电脑是FreeBSD?你是来找茬的是吗)

这里需要提醒的是,请提前检查家里的电表还有没有电,不要刷一半停电了,并且尽量把手机插到电脑的后部的USB接口,过程中不要碰到手机,管好家里的宠物不要让你的猫猫在刷机的时候把线踢掉了

step4 刷入!

  1. 解压刚才下好的ROM包,需要主要该目录和从根目录到这个目录的目录名都需要是英文,不要放到中文目录里操作
  2. 我们会发现这里面有6个脚本,其中2个以windows开头,2个以linux开头,2个以macos开头,分别对应不同电脑操作系统
  3. 以管理员模式打开CMD(如果是macos或linux则打开terminal并切换到root用户)
  4. 每个系统对应的脚本有两个,分别包含frist_installupdate字样,我们运行的是包含first_install这个名字的脚本,执行,中途会提示是否删除所有数据,输入y(即yes)回车
  5. 等待大约10分钟就可以刷机完毕,之后手机会自动重启并且进入系统
  6. 至此刷机正式结束,enjoy!

你以为到这里就结束了吗?

虽然系统是装好了,但是对我自己而言,还有一个很大的问题没有解决,就是欧版的MIUI里没有小米钱包,导致没法给NFC芯片中写入公交卡,且没法为公交卡充值(如果在刷系统之前就写入公交卡了,则公交卡依然生效,只是没法用手机充值,如果不嫌麻烦,可以带着手机去地铁站充或者用另一部支持NFC的手机充值,则可以跳过我后面讲的这些步骤),作为一个强迫症患者,我必须得把这个问题解决了呀,所以接下来就是介绍如何把小米钱包恢复出来。

正招

如同讲解棋谱,我们先讲正招,再谈其他方案,这个正招比较麻烦,而且也需要一些对Android操作系统的基础知识,具体原理为:

  1. 使用mipay-extract 这是一个国内开发者做的开源小工具,从国行MIUI的ROM中把小米钱包提取出来,并制作magisk模块
  2. 手机安装magisk
  3. 导入第1步中制作的magisk模块,从而恢复出小米钱包

上述过程讲的比较简略,只是一个基本的原理和思路,具体的细节可以参考这篇文章

我的方案

上述介绍的正招,需要比较强的动手能力和较多的时间,而我经过不断摸(goo)索(gle),找到了一位大佬做好的现成的magisk包进行了导入,完成了这个需求,如果不想看我的介绍可以直接看这位大佬的blog
如果想参考我的操作,请继续往下读

step1 安装magisk

首先介绍一下什么是magisk,magisk是一个在google工作的大佬利用业余时间开发的一款不root而能获取部分root权限的软件,可以认为是root权限的一层代理,让我们安全的进行一些需要root操作的行为,开源地址为: https://github.com/topjohnwu/Magisk

安装流程为:

  1. release页下载最新的安装包
  2. 把apk导入手机,并安装
  3. 打开后检查 Ramdisk 字样后面的标识是 Yes 还是 No, 具体可以参考官方指引
  4. 如果是yes,则拷贝一份刚才我们下载的欧版MIUI解压的目录中的boot.img,如果是no,则拷贝一份对应目录下的recovery.img,对于MIX4折款机型而言,是拷贝boot.img
  5. 把第四步中准备的boot.imgrecovery.img存储到手机里,放到自己能找到的目录里
  6. 打开magisk,点击Install按钮,点击Select and Path a File,在手机目录中找到刚才拷贝的boot.img,此时会在同目录中生成一个名为magisk_patched.img
  7. 把这个magisk_patched.img文件拷贝到电脑里
  8. 电脑安装adb,如果是windows,可以点此下载,其他操作系统(macos: https://dl.google.com/android/repository/platform-tools-latest-darwin.zip 、linux: https://dl.google.com/android/repository/platform-tools-latest-linux.zip )
  9. 解压adb的安装包,进入该目录,并且把magisk_patched.img 拷贝到该目录
  10. 先将手机关机,同时按住音量-开机键,等待屏幕上显示FASTBOOT字样即代表已进入fastboot模式,连接至电脑
  11. 管理员身份打开cmd(macos和linux则为打开terminal并切换到root),执行命令 fastboot flash boot ./magisk_patched.img
  12. 此时magisk安装完毕

step2 刷入模块

  1. 下载模块,地址:Onedrive网盘,下载名为v13.22.4.7.1.zip的文件
  2. 将该文件存储到手机里,放到自己能找到的目录
  3. 打开magisk,点击Install然后在手机存储里找到刚才的v13.22.4.7.1.zip文件,安装,安装的过程是交互式的,需要用音量键来控制,这个包里面内置了很多东西比如小米天气、小米输入法、小米兰亭字体、小米钱包等等,我们只需要小米钱包,所以其他的我们就按音量-,看到小米钱包按音量+即可
  4. 安装完毕,会发现小米钱包已经出现在手机中,此时NFC已经可以写入新公交卡或为公交卡充值了,enjoy!

这里有一个小插曲,就是那位大佬做的包里面有个循环定义的bug,第一次如果安装失败,需要全部按音量-,安装一次,再重新安装才能成功,这个问题我卡了很久,最后实在不行直接亲自去问这位大佬了,众所周知大佬的脾气一般都比较差,我是认真的读完了所有文档、FAQ之后鼓起勇气小心翼翼的提问的,还好最后解决了,解决方法我也分享了,希望大家不要重复踩坑。

一些问题

此处可以忽略,我只是分享一下我自己这么操作之后遇到的问题,最大的问题还是因为刷了欧版系统之后,手机不能重新锁定BL,所以如果手机丢失了,意味着你手机上的所有信息都不再安全(虽然说安卓手机就算有BL这安全性也存疑),但是这确实是一个问题,所以重要的内容要记得备份,隐私的内容尽量不要存在手机里。还有一个小问题就是飞书目前的版本在这么一波操作之后是没法使用扫一扫功能的(解决方法是用系统扫一扫然后跳转进入飞书或者是先拍照然后用飞书识图),这个的确有点不方便,刚开始我还以为是飞书的bug,和lark的oncall反馈之后协助研发同学排查了一周,发现这个问题可能是不是欧版MIUI的问题也不是飞书的问题,而是magisk或者magisk模块的问题,所以说恢复了NFC功能,却导致一些别的地方出了问题,真的是鱼和熊掌不能得兼呀~

尾声

经过一系列的长途跋涉,我们终于让一部国行的MIX4拥有了欧版的MIUI系统并且解决了没法给NFC写卡充值的问题,DIY的过程虽然艰辛,也遇到了不少困难,但是最终搞定的一刻是真的开心!
Happy DIY! Enjoy DIY!