1. 为什么Mac用户刷小米手机总踩坑
用Mac给小米手机刷机的朋友,十个里有八个在第一步就卡住了。不是ADB装不上,就是fastboot识别不到设备,再不然就是驱动装完了系统还是不认。Windows上那些一键刷机工具在macOS上基本全军覆没,论坛里翻半天教程,照着做还是报错。我自己第一次用MacBook给小米手机刷机的时候,光ADB环境就折腾了整整一个下午,最后发现是Homebrew安装的platform-tools路径没加到PATH里。
这篇内容就是把我这些年用Mac刷小米手机的经验完整梳理一遍。从ADB和fastboot的环境搭建,到解锁BL、刷入ROM、处理各种报错,每一步都配上我实际踩过的坑和解决方案。不管你是第一次刷机的新手,还是之前刷过但被Mac环境折磨过的老玩家,都能从这里找到可以直接抄作业的流程。核心关键词就几个:Mac、小米手机、刷机、ADB、fastboot,围绕这几个点把整个链路讲透。
需要提前说明的是,刷机本身有风险,操作前务必备份好数据。另外小米近两年的机型在解锁BL政策上有变化,具体以你手机当前系统版本的实际情况为准。下面的流程基于我手头几台小米机型的实操经验整理,不同型号在细节上可能有差异,但整体思路是通用的。
2. Mac端ADB与fastboot环境搭建全流程
2.1 为什么Mac上装ADB比Windows麻烦
Windows用户装ADB,下载一个压缩包解压,双击里面的exe就能用。Mac上没这么简单,因为macOS对可执行文件的来源有严格限制,从网上下载的二进制文件默认会被Gatekeeper拦截。而且Mac没有Windows那种“设备管理器”来统一管理驱动,fastboot模式下识别设备靠的是系统底层的USB驱动,一旦有问题排查起来更麻烦。
另一个坑是Homebrew。很多人看到教程说brew install android-platform-tools就完事了,但实际上Homebrew本身在Mac上安装就可能报错,尤其是网络环境不稳定的情况下,mac安装homebrew报错这个搜索词热度一直很高。所以我的建议是分两条路走:能用Homebrew就用,用不了就手动装,两条路我都详细说。
2.2 方案一:通过Homebrew安装platform-tools
先确认Homebrew是否已经装好。打开终端输入:
brew --version如果显示版本号就说明已经装了,直接跳到下一步。如果提示command not found,那需要先装Homebrew。安装命令官方给的是:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"但实测下来这个命令在国内网络环境下大概率会卡住或者报错。常见的报错是Failed to connect to raw.githubusercontent.com port 443。遇到这种情况,可以换用国内镜像源安装,具体方法网上有很多,这里不展开。装好Homebrew之后,安装platform-tools:
brew install android-platform-tools装完之后验证一下:
adb version fastboot --version两个命令都能输出版本号就说明装好了。Homebrew安装的好处是路径自动配置好,不需要手动改PATH。缺点是Homebrew本身可能出问题,而且更新的时候偶尔会把platform-tools搞坏,需要重新装。
2.3 方案二:手动下载platform-tools并配置PATH
如果Homebrew实在装不上,手动方案更可控。去Google的开发者官网下载platform-tools的Mac版压缩包,解压得到一个platform-tools文件夹。把它放到一个固定的位置,比如~/Library/Android/sdk/platform-tools。
然后配置PATH。Mac上默认终端是zsh,配置文件是~/.zshrc。用文本编辑器打开:
nano ~/.zshrc在文件末尾加上一行:
export PATH=$PATH:~/Library/Android/sdk/platform-tools保存退出后,执行:
source ~/.zshrc再验证adb version和fastboot --version。手动方案的好处是不依赖Homebrew,版本自己控制。缺点是需要自己管理路径,如果换了终端或者重装了系统,配置可能丢失。
注意:如果你用的是bash而不是zsh,配置文件是
~/.bash_profile。Mac从Catalina开始默认用zsh,但如果你手动改过默认shell,需要确认一下当前用的是哪个。
2.4 验证ADB和fastboot是否正常工作
环境装好后,用USB线把小米手机连到Mac上。手机需要先开启开发者选项:进入设置,找到“我的设备”,连续点击“MIUI版本”七次,直到提示“您已处于开发者模式”。然后回到设置,进入“更多设置”找到“开发者选项”,打开“USB调试”。
在终端输入:
adb devices如果一切正常,会显示一行设备信息,后面跟着device状态。如果显示unauthorized,说明手机上还没有授权这台电脑的调试权限,需要在手机屏幕上点击“允许USB调试”。如果列表是空的,说明连接有问题,可能是线的问题,也可能是驱动的问题。
fastboot模式的验证需要先把手机重启到fastboot。命令是:
adb reboot bootloader手机会重启并进入fastboot界面,屏幕上会显示一只兔子在修安卓机器人。然后在终端输入:
fastboot devices正常的话会显示设备序列号和fastboot字样。如果什么都没显示,那就是fastboot驱动的问题,Mac上这个问题比Windows更常见,后面会专门讲怎么排查。
3. 小米手机刷机核心操作环节拆解
3.1 解锁Bootloader的前置条件与操作
小米手机刷机的第一步是解锁Bootloader,这是所有后续操作的前提。没有解锁BL,fastboot模式下无法刷入任何非官方镜像。解锁需要用到小米官方的解锁工具,但官方工具只有Windows版,Mac用户没法直接用。
这就引出一个问题:Mac用户怎么解锁BL?我的做法是找一台Windows电脑(或者虚拟机)先完成解锁,解锁之后再回到Mac上进行后续操作。因为解锁BL是一次性的,解锁之后就可以在Mac上自由刷入了。如果你手头没有Windows环境,可以考虑用Parallels Desktop或者VMware Fusion装一个Windows虚拟机,只用来跑解锁工具。
解锁的具体流程是:在小米官网申请解锁权限,下载解锁工具,手机进入fastboot模式连接电脑,工具会自动识别并完成解锁。解锁过程中会清除手机所有数据,所以提前备份好。解锁完成后,手机会重启,开机时会显示“ unlocked”字样。
注意:小米近两年对解锁BL增加了社区等级和答题要求,新机型可能需要等待7天甚至更长的绑定时间。具体政策以你手机型号对应的官方说明为准。
3.2 fastboot模式下刷入Recovery和ROM
BL解锁之后,就可以在Mac上操作了。刷机的核心工具就是fastboot,所有操作都在终端里完成。第一步是刷入第三方Recovery,常用的有TWRP。下载对应你机型的TWRP镜像文件,通常是.img格式。
手机进入fastboot模式,连接Mac,然后执行:
fastboot flash recovery twrp.img刷入完成后,不要直接重启系统,否则官方ROM可能会把Recovery覆盖回去。正确的做法是执行:
fastboot boot twrp.img这样会临时启动TWRP,进入TWRP之后再在里面刷入永久Recovery。进入TWRP后,可以先做一个完整备份,包括系统、数据、Boot等分区。这个备份在后续出问题时能救命。
刷入ROM的方式有两种:一种是fastboot线刷,一种是Recovery卡刷。线刷适合官方完整包,卡刷适合第三方ROM。线刷的命令通常是:
fastboot flash system system.img fastboot flash boot boot.img但不同ROM的刷入方式不一样,有些是一键脚本,有些需要手动刷多个分区。我的建议是优先看ROM作者提供的说明,不要自己瞎猜分区名。
3.3 刷机后的首次启动与数据恢复
刷完ROM后第一次启动会比较慢,因为系统需要重建缓存和初始化数据。小米手机第一次启动可能需要5到10分钟,期间屏幕可能黑屏或者卡在开机动画,这是正常的,不要急着强制重启。
首次启动完成后,建议先不要恢复数据,而是先确认系统基本功能正常:WiFi能不能连、相机能不能用、通话有没有声音。确认没问题之后再恢复数据。恢复数据可以用之前TWRP做的备份,也可以用小米自带的换机工具。
如果你刷的是第三方ROM,比如类原生系统,可能需要额外刷入GApps(Google服务框架)和Magisk(root权限)。GApps的版本要和ROM的安卓版本匹配,刷错了会导致系统无法启动。Magisk的刷入相对简单,在TWRP里直接刷入zip包就行。
提示:刷机后如果遇到无法开机、卡在开机动画的情况,先尝试进入Recovery双清(清除数据和缓存),再重启。如果还是不行,可能需要重新线刷官方包救砖。
4. Mac刷机常见报错与排查技巧实录
4.1 fastboot连接不到设备的排查思路
这是Mac用户遇到最多的问题。fastboot devices没有任何输出,但手机明明已经进入fastboot模式并且连着线。排查顺序如下:
第一,换线。很多Type-C线只支持充电不支持数据传输,尤其是随机附赠的线。换一根确认能传数据的线试试。
第二,换USB口。MacBook上的USB-C口有时候对fastboot模式的支持不好,尤其是通过扩展坞连接的时候。直接插在电脑机身上的口,不要用Hub。
第三,检查fastboot驱动。Mac上fastboot识别设备依赖的是系统自带的USB驱动,但有些小米机型需要额外的驱动才能被识别。可以在终端输入system_profiler SPUSBDataType,看看USB设备列表里有没有出现小米的设备。如果没有,说明系统层面就没认到。
第四,重启到fastboot的方式。有些机型用adb reboot bootloader进入fastboot后识别不到,但关机后按住音量减+电源键进入fastboot就能识别。这个差异和机型的bootloader实现有关。
4.2 adb unauthorized的解决方法
adb devices显示unauthorized,说明手机没有授权这台电脑。解决方法看起来很简单:在手机上点击“允许USB调试”。但有时候手机屏幕上根本不弹这个提示,或者点了允许之后还是显示unauthorized。
这种情况通常是ADB密钥的问题。Mac上的ADB密钥存放在~/.android/adbkey和~/.android/adbkey.pub。如果这两个文件损坏或者权限不对,就会导致授权失败。解决方法是删掉这两个文件,然后重启ADB服务:
rm ~/.android/adbkey ~/.android/adbkey.pub adb kill-server adb start-server然后重新连接手机,手机上会重新弹出授权提示。点击允许后应该就能正常识别了。
还有一种情况是开发者选项里的“USB调试”开关需要关掉再打开,或者需要撤销USB调试授权后重新授权。在开发者选项里找到“撤销USB调试授权”,点一下,然后重新连接。
4.3 刷机过程中断的处理与救砖
刷机过程中最怕的就是中途断开连接,比如USB线松了、电脑休眠了、终端被意外关闭了。这种情况下手机可能处于半刷入状态,无法正常开机。
如果还能进入fastboot模式,那就有救。重新连接Mac,确认fastboot devices能识别到,然后重新刷入完整的官方包。小米官方包通常是一个.tgz压缩包,解压后里面有一个flash_all.sh脚本,在Mac上可以直接运行:
chmod +x flash_all.sh ./flash_all.sh这个脚本会自动刷入所有分区,把手机恢复到官方系统状态。如果连fastboot都进不去,那可能需要进入EDL模式(9008模式)来救砖,但EDL模式需要特殊的授权文件,普通用户很难操作,建议直接找售后。
注意:刷机前一定要确认电量在50%以上,最好插着充电器操作。刷机过程中不要碰USB线,不要合盖休眠,终端不要关。
4.4 常见问题速查表
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
adb devices列表为空 | USB线不支持数据传输 | 换一根确认能传数据的线 |
adb devices显示unauthorized | ADB密钥未授权 | 删除~/.android/adbkey后重启ADB |
fastboot devices无输出 | fastboot驱动问题或USB口问题 | 换USB口,直插机身不用Hub |
| 刷机后卡开机动画 | 数据冲突或ROM不兼容 | 进Recovery双清后重启 |
| 刷机中途断开 | USB连接不稳定 | 重新进入fastboot,重刷官方包 |
| Homebrew安装报错 | 网络问题 | 换国内镜像源或手动安装 |
| fastboot flash报错 | 分区名不对或镜像损坏 | 核对ROM说明,重新下载镜像 |
5. 刷机前后的数据管理与系统优化
5.1 刷机前的完整备份策略
刷机会清空手机所有数据,所以备份是必须的。但备份不只是把照片拷到电脑上那么简单。我习惯分三层备份:
第一层是基础数据:照片、视频、文档、微信聊天记录。照片视频直接拷到Mac上,微信聊天记录用微信自带的迁移功能备份到另一台手机或者电脑上。
第二层是应用数据:很多应用的数据不在相册里,比如笔记类应用、记账类应用。这些需要用应用自带的导出功能,或者用小米云服务同步。小米云服务在刷机前可以手动同步一次,刷完机后再同步回来。
第三层是系统级备份:在TWRP里做一次完整的Nandroid备份,包括Boot、System、Data、Cache等分区。这个备份存在手机存储或者OTG U盘里,刷机出问题时可以直接恢复。Nandroid备份的好处是完整,缺点是占用空间大,而且跨版本恢复可能有问题。
提示:TWRP备份默认存在手机内部存储的TWRP文件夹里,刷机前把这个文件夹拷到Mac上,避免被清空。
5.2 刷机后的系统调优与常用配置
刷完机之后,系统是全新的,需要重新配置。我通常会做这几件事:
第一,关闭系统广告。小米的MIUI和澎湃OS里有很多系统级广告,刷完机后可以在设置里逐个关闭。主要位置在“设置-密码与安全-系统安全-广告服务”里关闭个性化广告推荐,然后在各个系统应用(如天气、日历、文件管理)的设置里关闭“内容推广”。
第二,调整动画速度。开发者选项里把窗口动画缩放、过渡动画缩放、Animator时长缩放都调到0.5x,系统会感觉流畅很多。
第三,配置ADB无线调试。小米手机支持ADB无线调试,在开发者选项里打开“无线调试”,然后可以在Mac上通过WiFi连接手机,不需要插线。命令是:
adb pair 手机IP:端口 adb connect 手机IP:端口配对码在手机的无线调试界面里会显示。无线调试的好处是方便,缺点是速度比有线慢,刷机这种操作还是建议用有线。
第四,清理系统数据。刷完机后系统里会有一些残留的缓存和日志,可以在Recovery里再双清一次,或者用系统自带的清理工具清理一遍。mac系统数据怎么清理这个搜索词热度很高,说明很多人对系统存储管理有需求,手机端也是类似的逻辑,定期清理缓存能释放不少空间。
5.3 刷机后的ADB常用命令与日志抓取
刷完机后,ADB仍然是常用的调试工具。几个高频命令:
抓取日志:
adb logcat > log.txt这个命令会把手机的所有日志输出到log.txt文件里。如果只想看某个应用的日志,可以加上过滤条件:
adb logcat | grep "关键词"截图并保存到电脑:
adb exec-out screencap -p > screenshot.png这个命令直接把截图保存到Mac当前目录,不需要先存到手机再拷出来。
安装应用:
adb install app.apk卸载应用:
adb uninstall 包名传文件到手机:
adb push 本地文件 /sdcard/目标路径从手机拉文件到电脑:
adb pull /sdcard/文件路径 本地路径这些命令在刷机后排错、调试、日常使用中都很实用。尤其是adb logcat,遇到应用闪退或者系统异常时,抓一份日志能快速定位问题。
6. 关于刷机这件事的一些个人体会
刷机这个事,说到底是拿时间换自由。官方系统稳定但限制多,第三方ROM自由但坑也多。我用Mac刷小米手机这些年,最大的体会是:环境搭建比刷机本身更耗时。ADB和fastboot在Mac上的配置一旦搞定,后面刷机的操作其实很快,十几分钟就能完成。但环境搭建可能会卡住新手一整天。
另一个体会是,不要追求最新版的工具。platform-tools更新频繁,但有时候新版本反而会有兼容性问题。我习惯用一个确认稳定的版本,除非遇到必须升级的情况,否则不轻易更新。TWRP和Magisk也是同理,稳定比新更重要。
还有就是,刷机前一定要想清楚为什么要刷。如果只是觉得官方系统广告多,其实可以通过关闭广告和卸载预装应用来解决,不一定非要刷机。刷机的真正价值在于获取root权限、安装类原生系统、或者体验新版本的安卓。如果这些对你来说不是刚需,那保持官方系统反而是更省心的选择。
最后分享一个小技巧:如果你经常刷机,可以在Mac上建一个专门的文件夹,把常用的工具(platform-tools、TWRP镜像、Magisk、常用ROM)都放在里面,再写一个简单的shell脚本自动配置PATH和检查设备连接。这样每次刷机的时候不用重新折腾环境,直接跑脚本就行。我自己写了一个check_device.sh,内容就是检查adb和fastboot能不能识别到设备,每次刷机前跑一下,能省不少事。