最后更新时间:2022年12月23日
重要提醒
MIUI 13 (Android 12)请务必看到最后。
经过长期使用,我发现Lineage OS就算没有刷写root权限,在国内的环境下常常被识别为已经root,无法打开银行APP,或者导致人脸识别失败。而xiaomi.eu就没有这个问题,具体的原理我还是不太清楚。如果你在国内有很强烈的使用相关APP的需求,你只能选择xiaomi.eu。
不要觉得可以通过Magisk隐藏功能来操作,不但费劲,而且效果不大。但是如果你已经安装了Lineage OS,而且喜欢原生的纯粹,那么你必须使用Shamiko这个模块,但是仍然要注意它只能隐藏root而不能隐藏解锁状态。这又是一个全新的故事了,不在本文的讨论范围内。
总而言之,鉴于将来越来越多的APP会直接检测手机是否解锁,而且无法逃避检测,我不知道xiaomi.eu还能不能挺过去。如果挺不过去,线刷MIUI官方国际版并且重新上锁将会成为唯一选择。
准备篇
刷机前一定要做的准备工作
一定要先学会fastboot模式下线刷MIUI官方ROM。参考资料为本人之前撰写的文章:https://jaylinwu.wordpress.com/2017/02/17/92/
重要通知:上面这篇教程经过几年的拖更终于全面更新排版,可读性大大提升,还添加了目录
如果你尚未掌握线刷的技巧,请勿研究卡刷,因为很容易在中途变砖而开不了机,到时候无计可施,只能去售后。
同理,如果你在卡刷的过程中遇到任何问题,不用到处求人,只需要fastboot模式下线刷即可,一切都完好如初。
另外还需要安装ADB,简单掌握ADB的使用技巧,同样可以在上面的那篇文章里找到教程。
xiaomi.eu和MIUI国际版的区别
xiaomi.eu不是MIUI国际版。
MIUI国际版是小米官方出品的ROM,这些年来MIUI国际版也有所变质,所以越来越多的人选择xiaomi.eu。
xiaomi.eu是欧洲的一个第三方团队出品的ROM,主要目标是精简、净化MIUI的官方ROM。功能上其实和官方国际版几乎是一致的,但是把所有不必要的组件(尤其是各种广告)给去除了。该团队宣称其修改的ROM符合欧盟标准,我们都知道欧盟对于数据的要求还是很严格的,所以可能在隐私保护方面也达到了一定水准(比如无后门、无非法发送数据)。
xiaomi.eu保留了Google服务和小米云服务。
正确选择你的ROM
以前小米手机国内外售卖的型号在硬件上是一致的,现在则不然。
比如国内版本的 红米Note 9 Pro 在海外的版本是 Mi 10T Lite ,而海外型号为 红米Note 9 Pro 的手机完全是另外一部手机。海外一般把国内的 红米Note 9 Pro 称为 红米Note 9 Pro 5G。
那么,有什么好的办法能让我们从这些眼花缭乱的机海中确定自己的手机是什么版本呢?
其实很简单,就是找到手机的通用代码(codename)。每部手机都有自己独特的代码,比如之前提到的国内版本的 红米Note 9 Pro 和海外版本的 Mi 10T Lite 都有同一个代码gauguin,我们在找包的时候,顺着这个代码找便不会错。
查询codename的网站有很多,这里随便贴一个:https://miuiver.com/xiaomi-device-codename/
但值得注意的是,即便两部设备享有同一个codename,也不能轻易地相信,最好详细研究一下两部手机在硬件上是否完全一致,或者有没有重大的差别。比如国内版本的 红米Note 9 Pro 和海外版本的 Mi 10T Lite 在相机模块上是不一样的,一个使用三星镜头,一个使用索尼镜头,这就导致刷成另一个版本的官方ROM后会令相机无法使用。好在xiaomi.eu解决了这个问题,相机模块可以做到通用。
总的来说,codename能简化我们的工作,但是也需要自己去对比硬件参数,亲自刷机实验一下有无问题。
下载xiaomi.eu
访问https://xiaomi.eu ,然后根据页面上的引导一页页找到下载页面。
如果你英文能力不好的话,建议开启网页翻译。
找包的时候,注意结合手机的型号和codename。因为xiaomi.eu的ROM基于国行ROM,所以命名方式和国行ROM一致。比如红米的官方国际版命名方式是英语“Redmi”开头,而国行官方ROM的开头则是汉语拼音“HM”。
联发科的手机不建议折腾
联发科的处理器由于内核闭源的特性,导致recovery和刷机包都很难找,因为制作者们也很为难。xiaomi.eu也从未对联发科处理器的手机提供任何支持。因此,如果你的小米手机是联发科处理器,不建议折腾,乖乖用自带的出厂ROM,或者去线刷MIUI官方国际版。
下面正式开始刷机之旅!
解锁你的手机
解锁地址:https://www.miui.com/unlock/download.html
解锁软件以及具体的操作方法小米那边一直在更新,建议直接按照解锁页面、解锁软件给定的步骤去操作。
需要注意的是,目前小米对解锁提出了新要求:在开发者选项中绑定小米账户后,要等待168小时才能解锁。
刷入TWRP或者其他第三方recovery
打开TWRP官网的机型列表页面(https://twrp.me/Devices/),搜索自己机型的codename,下载recovery镜像,文件类型为.img。
如果你的机型并未受到TWRP官方的支持,可以考虑第三方recovery。我个人推荐先去OrangeFox(https://orangefox.download/)查找一下,有时候OrangeFox会做TWRP不做的机型。OrangeFox整体上和TWRP差不多,只是部分操作逻辑和TWRP不同。如果OrangeFox也没有,可以访问XDA论坛(https://forum.xda-developers.com/),找到你手机型号所在的板块,在置顶帖中应该可以下载到独立开发者制作的recovery。
我现在比较喜欢Lineage OS官方的recovery,虽然功能比TWRP少,但是简洁流畅,启动速度快,重点是没有bug。TWRP有时候会出现死机重启的恶性bug
重启手机进入fastboot模式,USB连接电脑。
台式机请永远使用后置USB接口,最好是USB2.0的,我就为此吃过大亏
打开电脑的命令行工具,执行以下命令:
# 该命令确认你的手机是否正确连接了电脑
fastboot devices
# 该命令刷入img镜像文件为recovery
# 双引号内的路径应当换成你自己下载的镜像文件的路径(按住shift键,右键该文件,选择“复制为路径”)
fastboot flash recovery "D:\file\twrp.img"
# 该命令将镜像文件写入启动项中,并且引导手机自动重启进入recovery
# 双引号内的路径应当换成你自己下载的镜像文件的路径(按住shift键,右键该文件,选择“复制为路径”)
fastboot boot "D:\file\twrp.img"
在TWRP中要执行的操作
格式化内置存储空间
进入TWRP后,我们要先format data(在主界面wipe菜单里),也就是格式化内置存储分区(俗称内置SD卡)。【操作前请务必备份数据】
Format data完成后,在TWRP主界面的reboot菜单中选择recovery,重启进入recovery。
确认磁盘文件系统
接着,要确认格式化后的存储分区是不是f2fs的文件系统(类似Windows系统上的NTFS文件系统)。在我的试验中,xiaomi.eu的ROM在ext4的文件系统下无法成功加密,导致开机卡米进不了系统,只有f2fs可以。确认文件系统的方法和改变文件系统的方法,自行上网搜索。
据了解,部分新款式的小米手机因为官方ROM就采用了f2fs文件系统,所以必须以f2fs格式刷写。老款式的小米手机应该还是通用的ext4文件系统,所以无需更改文件系统
刷Lineage OS通常不需要改变系统文件格式(默认ext4),format data后的默认系统文件格式就可以正常使用
改变系统文件后,在TWRP的reboot选项中选择recovery,重启进入recovery。
双清操作
在刷写ROM文件之前,还需要进行双清或者三清操作(cache、data等,但不包括system、vendor),在TWRP中就是执行一次factory reset。
对于清除数据而言,通常只需要执行factory reset,TWRP会自动帮你处理完毕,无需手动操作三清、四清。多删、误删反而会造成问题,得不偿失。
将ROM发送到手机中
现在,我们要把xiaomi.eu的包拷贝进手机中。
通常来说,TWRP的MTP是可以直接用的,也就是在电脑端可以通过USB直接访问手机的内置存储分区(内置SD卡目录)。但是在某些特殊情况下,电脑无法访问手机的内置存储分区,那么怎么办呢?
我推荐的方法是把ROM拷贝到一张SD卡中,然后插入手机。如果你的手机支持OTG,也可以通过OTG连接U盘或者读卡器。
如果直接通过MTP拷贝到手机内置存储,TWRP应该默认就显示出那个ROM文件。如果ROM拷贝到SD卡中,还需要在TWRP中访问到该文件。点击TWRP界面最上方的返回按钮,然后找到sdcard1或者sdcard2文件夹,就能看到SD卡中的ROM文件。
如果你的手机不支持SD卡或者OTG,那么只能用adb命令把ROM推送过去,该操作称为sideload(旁加载)。
在TWRP的高级选项中开启ADB功能,然后在电脑上的命令行终端中使用以下命令:
# 替换filename.zip为你电脑上存储ROM的完全路径,如E:\ROMs\xiaomi\xiaomi10_eu.zip
adb sideload filename.zip
使用adb sideload命令后,ROM文件已经被发送到手机中刷写,TWRP上会同步显示进度。如果你还需要刷写GApps,应该紧接着使用adb sideload发送刷写。
因为本文的重点在讲解卡刷的技巧,这里只是针对特殊情况讲解了adb sideload这一功能。如果你通过这种方式刷机成功,直接在TWRP上点击reboot system(重启系统)即可。
开始刷写
打开TWRP主界面的Install菜单,通过触摸屏(较旧的手机是通过实体按键)找到ROM存放的文件夹,点击ROM文件,滑动确认条刷入ROM文件。刷写完成后,点击reboot to system。
刷写Lineage OS还需要在重启前紧接着刷写OpenGApps,xiaomi.eu因为自带了Google组件,所以不必执行这一步操作。
刷写成功
首次开机时间较长(旧手机的CPU和磁盘性能较弱,第一次开机时间一般在10分钟左右),最后能顺利开机进入系统即为成功。如果一直卡在小米logo界面,则为刷机失败。
刷机失败后,可以选择fastboot线刷,也可以继续在TWRP中重刷ROM包、双清数据、修改文件系统等。
与刷写Lineage OS的区别
刷写Lineage OS的大体操作是一致的,具体区别在于刷完ROM文件后,要接着手动刷入firmware和opengapps的包文件。
firmware可以在https://xiaomifirmwareupdater.com下载到。
opengapps可以在https://opengapps.org/下载到。
OpenGapps已经落伍了,不但只支持到Android 11,而且经常出现不兼容的情况。现在比较推荐https://nikgapps.com/
xiaomi.eu因为自带了firmware文件和Google服务文件,所以不需要自己额外手动刷。当然,如果你不需要firmware保持最新,或者不需要Google服务,也可以不刷。
如果firmware的版本没有更新,则不必重复刷。此外,没有必要为了最新的firmware去fastboot线刷MIUI官方ROM,小米的firmware是有单独包可以刷的。其他手机因为没有单独可以刷的firmware,才需要先刷一遍官方ROM,坊间称之为“底包”。这种底包对小米手机来说其实只有救砖的功能。
另外,Lineage OS对TWRP的分区加密的文件系统并未强求f2fs,ext4就可以。
更新系统
更新就比较简单了。先通过手机联网下载新版本的ROM文件到内置存储分区中,然后重启手机到Recovery。直接刷,不需要删除任何东西。但是大版本更新时,必须要Factory Reset、Format Data。什么是大版本更新呢?就是MIUI版本从12升级到12.5,Android版本从10升级到11。
Lineage OS支持OTA升级,跟一般的手机系统更新没什么区别。但是有时会因为TWRP的故障导致刷写失败,甚至无法开机,因此还是建议手动刷机。
Lineage OS是每周出一个新版本(现在Lineage OS只提供Nightly版本),但是xiaomi.eu是跟随MIUI官方版本,而MIUI官方版本更新实际上很慢,可能几个月才更新一次稳定版,所以手动刷机并不是一件很麻烦的事情。
Lineage OS刷机官方教程
这里不得不为Lineage OS官方点赞,每部设备都有保持更新的独立教程,精确到每个步骤、每个细节,十分令人感动。
你可以上https://wiki.lineageos.org/devices/找到你的设备,然后找到Installation的教程。
或者可以直接访问https://wiki.lineageos.org/devices/monet/install,将/install前的字符串替换为你的设备的codename,就可以直接看到你设备的安装教程。
美中不足的是该教程仅仅使用Lineage OS官方的Recovery,而不是最流行的TWRP。
MIUI 13 (Android 12) 特别篇
因为Android 12开始很多机制发生了改变,所以传统的刷机方法也要跟着改变。这里只说明xiaomi.eu针对MIUI 13的改变。
xiaomi.eu目前仅提供fastboot刷机模式,但是总体还算简单。解压下载的zip压缩包后,就会看到bat脚本执行文件。
刷机脚本分为Windows、Linux、Mac OS等版本,Windows系统只需要关注windows开头的后缀名为bat的文件即可。
如果你是首次刷写xiaomi.eu,请执行first_install_with_data_format
。该操作强制格式化全部数据,请务必做好备份工作。
如果是升级操作,则执行update_rom
。该操作保留数据。
某种程度上讲,这比卡刷要方便许多,毕竟大部分人除了刷机外也用不到什么recovery的功能。