ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Mac下小米手机刷机实战:从ADB到fastboot的完整流程指南

Mac下小米手机刷机实战:从ADB到fastboot的完整流程指南 相信不少手里同时有 Mac 和安卓备机的朋友都经历过这种尴尬Windows 上一堆刷机工具点两下就能干活可到了 macOS 上满世界找“小米刷机助手 Mac 版”却怎么也找不到好不容易装上 ADB 工具终端敲个命令又报错瞬间就没了脾气。其实 Mac 下刷小米手机并没有想象中那么玄乎核心就是几个命令行工具和一条清晰的流程。我最近刚用一台 MacBook Air 完整走了一遍小米 13 的刷机流程从装工具、开 USB 调试到终于看到 fastboot 界面再到成功刷入第三方 Recovery 和系统包全程踩了不少坑。这篇就当成一份带踩坑记录的实战笔记把从零到一的完整过程和能直接用上的命令都整理出来希望能帮还在折腾路上的人省点时间。1. 内容整体设计与思路拆解1.1 为什么 Mac 刷机总比 Windows 麻烦很多人第一次在 Mac 上刷机第一反应是去小米官网找 Mac 版 MiFlash结果发现官方工具只支持 Windows。这背后其实有一个很现实的原因刷机工具需要直接和手机底层的存储分区打交道厂商为 Windows 平台维护一套 GUI 工具已经要投入不少人力再加上 macOS 的驱动模型、权限机制和 Windows 差别很大维护成本更高所以官方干脆不提供 Mac 版。但 Mac 用户也不是真的无路可走因为 Android 调试体系里最核心的 ADB 和 fastboot 本身就是跨平台命令行工具Google 一直在维护 macOS 版本。换句话说Windows 上那些图形化工具只是把命令行操作包了一层壳Mac 用户直接绕过壳去用底层命令反而更灵活也更能看清每一步到底在干什么。1.2 刷机前需要想清楚的三件事动手之前有几个问题值得先问问自己。刷机的目的到底是什么是为了解锁 BL 后刷入第三方 ROM还是为了救砖或者只是想把系统降级回去不同的目的对应的流程和风险完全不一样比如只做数据分区格式化和写入完整 fastboot ROM 包操作步骤和注意事项是两码事。还有个很容易被忽略的点解锁 Bootloader 会清空手机全部数据。小米的解锁工具在申请通过后第一次执行解锁操作时会自动触发一次恢复出厂设置。如果手机里有不想丢的照片、聊天记录或者应用数据一定要提前备份到电脑或云端别等到解锁完才发现什么都没了。另外要确认一下电脑上有没有安装 Xcode Command Line Tools。这个工具包是 Mac 上编译和运行很多命令行程序的基础环境后面用 Homebrew 装 ADB 工具时会自动依赖它。要是没装Homebrew 安装过程会弹出一个窗口让你安装等几分钟就好。1.3 整体流程拆解从装工具到完成刷机整个刷机过程可以拆成下面几个阶段第一阶段是准备环境包括安装 Homebrew、用 Homebrew 安装 ADB 和 fastboot 工具第二阶段是手机端准备开启开发者选项、打开 USB 调试第三阶段是连接与授权用 ADB 命令确认电脑能识别手机第四阶段是解锁 Bootloader 并进入 fastboot 模式第五阶段才是真正执行刷机操作。每一步之间有严格的依赖关系前一步没做好后面就会出各种莫名其妙的问题。比如电脑端没装好驱动或 ADB 版本太老就会出现adb devices能看到设备号但状态是unauthorized或者干脆什么都不显示。后面我会把每一阶段的坑和解决办法都摊开来讲。2. 核心细节解析与实操要点2.1 前置准备这些基础概念得先搞清楚刷机这事儿术语太多容易劝退但核心就几个词ADB、fastboot、Bootloader 和 Recovery。ADB 全称 Android Debug Bridge是电脑和手机通信的桥梁手机正常开机时靠它来传命令、传文件、抓日志fastboot 则是一个更底层的引导模式手机还没完全启动系统时就能让电脑直接和它的分区读写打交道刷机最关键的一步就是在这个模式下完成的。Bootloader 是手机开机时最先运行的一段引导程序它决定要不要加载系统厂商默认给它上了锁防止用户随便刷入非官方系统所以想刷第三方 ROM 就得先解锁 Bootloader。Recovery 是一个独立于主系统之外的小型恢复环境相当于手机里的“PE 维护系统”可以在里面做双清、刷入刷机包。这几者之间的关系可以这样理解ADB 是在系统正常运行时的“远程控制台”fastboot 是系统还没起来时的“底层刷写通道”Bootloader 是那道决定能否打开通道的“门禁”Recovery 则是震后重建用的“应急工具间”。整个刷机流程本质上就是依次通过这四层去操作手机。2.2 工具选型为什么推荐 Homebrew 安装Mac 下安装 ADB 工具常见方式有三种手动去 Android 开发者官网下载 platform-tools 压缩包、用 Homebrew 安装、或者使用第三方的 Mac 刷机图形工具。我自己用的是 Homebrew原因有三个。一是方便管理。Homebrew 会把 platform-tools 装到统一目录后续要用brew upgrade更新 ADB 版本非常方便手动下载的话每次升级都要重新去官网下压缩包、解压、配环境变量麻烦而且容易忘。二是依赖处理省心。brew 在安装过程中会检查并处理依赖关系避免出现“命令装上了但缺库跑不起来”的情况。三是社区维护及时Android 出新版本后Homebrew 仓库里的 platform-tools 通常很快就能跟上不会出现旧版本 ADB 不识别新机型这种尴尬。如果你实在不想装 Homebrew手动下载的方式也很简单去 Android 开发者官网下载适用于 macOS 的 platform-tools解压后把文件夹放到某个固定位置比如~/platform-tools然后在~/.zshrc里加一行export PATH$PATH:~/platform-tools保存后执行source ~/.zshrc让配置生效。两种方式殊途同归选一个自己顺手的就行。2.3 Homebrew 安装报错多半不是你的问题标题里提到的热词里有个“mac安装homebrew报错”这我太有感触了。很多人在第一步就卡住了报错信息五花八门最常见的有几种网络超时连不上 GitHub、curl 下载脚本被拦截、Ruby 版本不对。其实这里面有一个很大的“坑”是网络环境造成的国内直连 Homebrew 官方源经常超时所以网上很多教程都建议替换成国内镜像源比如中科大或清华的镜像在安装脚本阶段就指定镜像地址或者装完后把 brew 的源切换到镜像站速度会有质的提升。另外还需要注意一个细节Homebrew 的不同版本对 macOS 版本有最低要求如果系统太老可能只能装旧版 brew而旧版 brew 又可能装不了新版 platform-tools形成连锁反应。遇到这种情况最直接的解法是先升级 macOS能升就升或者考虑手动下载 platform-tools 绕开 Homebrew。报错这种事情最忌讳的就是不懂装懂硬着头皮重复执行多看一眼报错信息里的关键词比如Failed to connect、Permission denied、unsupported通常就能定位问题方向。2.4 手机端准备工作开发者选项不是摆设手机端要做的准备工作很多人觉得不就是打开 USB 调试嘛但实际上有几个细节直接影响后面能不能连上。首先是打开开发者选项的方式去“设置 - 我的设备 - 全部参数与信息”连续点击 MIUI 版本号七次系统会提示进入开发者模式。这一步在不同 MIUI 版本里入口位置略有差别但规律是一致的找到版本号连点。然后是进入“设置 - 更多设置 - 开发者选项”打开“USB 调试”。这里有个容易踩的坑小米手机默认可能还开着“USB 安装”的开关如果没打开ADB 传文件或安装 APK 时会被拒绝。建议把“USB 调试”和“USB 安装”这两个开关都打开。还有一个高级选项叫“USB 调试安全设置”允许通过 USB 修改权限或模拟点击普通刷机一般用不到但如果后面要用某些自动化工具可能需要打开。这个选项默认是隐藏的需要插入 SIM 卡才能看到很多人在这一步卡住就是因为没插卡。最后如果觉得每次插线都弹授权窗口太烦可以在开发者选项里打开“选择 USB 配置”把默认配置改成“PTP”或“MTP”根据实际需要来不过这不影响 ADB 功能本身。2.5 连接与授权adb devices 的正确打开方式准备工作做完用数据线把手机和电脑连起来。这里要说一个老生常谈但依然有很多人犯的错数据线一定要用能传输数据的原装线或品牌线不要用那种只能充电的“充电线”。充电线在物理上就缺了数据线芯插上后电脑完全认不到设备排查半天还以为软件配错了。连上后在终端执行adb devices第一次执行时手机屏幕上会弹出一个“允许 USB 调试吗”的对话框勾选“始终允许使用这台计算机进行调试”然后点击允许。如果之前手滑点过“拒绝”可以在开发者选项里找到“撤销 USB 调试授权”然后重新插拔数据线再来一次。执行adb devices后如果输出类似下面这样List of devices attached 1234567890abcdef device状态列是device就代表连接正常。如果状态是unauthorized说明手机端的授权弹窗没有点允许或者点的“拒绝”如果状态是offline大概率是 ADB 版本太旧优先升级 platform-tools如果列表是空的则检查数据线、USB 口、驱动。为了确认 ADB 能正常操作手机建议顺手执行几个常用验证命令# 查看手机型号 adb shell getprop ro.product.model # 查看当前系统版本 adb shell getprop ro.build.version.release # 截图并保存到电脑当前目录 adb exec-out screencap -p screen.png这几个命令能跑通说明 ADB 链路是完整的后面进行的各种操作才有保障。3. 实操过程与核心环节实现3.1 环境搭建实战从零装好 ADB 和 fastboot先说最重要的一步把 ADB 和 fastboot 装好。我是在全新状态的 macOS 上操作的系统版本是 macOS Sonoma。第一步确认有没有 Xcode Command Line Toolsxcode-select --install如果之前没装过会弹窗询问是否安装点安装然后等待完成。这一步不是可选项很多工具安装时需要用到编译器没有它 Homebrew 也会报错。第二步安装 Homebrew。官方安装命令是/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)国内网络条件下大概率会卡住我是直接用镜像方式安装的简单来说就是在终端里执行export HOMEBREW_BREW_GIT_REMOTEhttps://mirrors.ustc.edu.cn/brew.git export HOMEBREW_CORE_GIT_REMOTEhttps://mirrors.ustc.edu.cn/homebrew-core.git export HOMEBREW_BOTTLE_DOMAINhttps://mirrors.ustc.edu.cn/homebrew-bottles然后再执行官方安装脚本。装完后再设置全局镜像源这样以后brew install其他软件时也走国内源速度稳定。第三步安装 platform-toolsbrew install android-platform-tools安装完成后验证一下adb version fastboot --version能看到版本号就说明工具装好了。3.2 解锁 Bootloader需要官方工具和一点耐心锁 Bootloader 状态下fastboot 只能执行fastboot devices、fastboot reboot这类基础命令不能刷写分区。所以刷机的第一步是解锁。去小米官网的“小米解锁”页面用手机号登录然后申请解锁资格。这一步有两个坑要避一是申请通过后要下载小米解锁工具 MiUnlock这个工具只有 Windows 版Mac 用户有两种处理方式——用 Windows 虚拟机或找一台 Windows 电脑或者用 Wine 之类的兼容层强行跑。我自己实测在 Mac 上直接跑 MiUnlock 很困难建议直接去 Windows 虚拟机里操作。二是申请通过后一般有一个“等待时间”有些账号第一次解锁要等 7 天或更久这段时间没法跳过只能耐心等。解锁的具体步骤就八步手机保持开机状态打开 USB 调试并连接电脑。在 Windows 虚拟机里运行 MiUnlock 工具。登录和申请时相同的小米账号。手机关机同时按住“音量减”和“电源键”进入 fastboot 模式手机屏幕会显示一只米兔在修机器人。确认 fastboot 模式下手机被电脑识别。在 MiUnlock 工具里点击“解锁”。工具会提示解锁操作会清空数据确认无重要数据后点继续。等待解锁完成手机自动重启。如果 MiUnlock 提示“无法获取设备信息”检查虚拟机是否把 USB 设备正确透传给 Windows建议用 USB 直连而不是网络连接。3.3 解锁后进入 fastboot 模式解锁完成后每次要刷机都得手动进入 fastboot 模式。这里提供两种方法。方法一是按键组合手机关机状态下同时按住音量减和电源键大约三到五秒后松手屏幕出现米兔修机器人画面就表示进入成功了。这个方法适合所有小米手机百试百灵。方法二是 ADB 命令手机正常开机打开 USB 调试连接电脑后执行adb reboot bootloader手机会自动重启进入 fastboot 模式。这个方法比按键更省事适合手头没有实体电源键的手机但在 Mac 下前提是 ADB 链路正常。进入 fastboot 模式后用命令确认电脑能识别到设备fastboot devices正常输出类似7890123456789abc fastboot如果这里什么输出都没有多半是 USB 线或端口问题换原装线、换接口再试。Mac 用户不需要额外安装 fastboot 驱动这一点比 Windows 省心很多。3.4 fastboot 刷机实战从 recovery 到 rom 包进入 fastboot 模式后真正的刷机环节来了。很多人刷机的目的是为了装第三方 Recovery 或者刷入 Magisk 补丁包最终目标各有不同但基本的刷写命令是一致的。第一步刷入第三方 Recovery。以常用的 TWRP 为例先下载对应机型的 TWRP 镜像文件放到 Mac 上某个路径下比如~/Downloads/twrp.img然后执行fastboot flash recovery ~/Downloads/twrp.img这里要注意的是小米手机存在 A/B 分区和传统 A-only 分区两种结构。如果是 A/B 分区设备刷完 recovery 后还需要额外启动一次 recovery 让它常驻否则系统重启后 recovery 会被原厂覆盖。不同类型机型的处理方式有细微差别建议去 TWRP 官网根据机型找到对应说明。第二步如果只是刷入完整卡刷包不进 fastboot 刷系统那就用 fastboot 启动到 recoveryfastboot boot ~/Downloads/twrp.img这个命令不会刷写 recovery 分区只是临时启动一次适合不想永久替换 recovery、只想进去双清或刷机的场景。实测这样做的好处是不会影响后续 OTA 更新。第三步真正要往手机里刷入系统分区常见的做法是先把刷机包传到手机然后进 recovery 执行刷入操作。传文件可以用 recovery 自带的 ADB sideload 功能也可以用 MTP 模式挂载。我个人推荐 ADB sideload因为不需要在 recovery 里挂载数据分区流程更稳adb sideload ~/Downloads/xxx_rom.zip执行前注意recovery 里要打开“高级 - ADB Sideload”开关电脑端执行命令后进度条才会正常跑起来。3.5 fastboot 指令大全常用命令逐个讲透经常看到有人在网上找“fastboot指令大全”但很多命令在小米手机上是不适用的或者用错分区名会有风险。把最常用的几个命令整理成一张表方便对照使用命令作用说明与风险提示fastboot devices列出已连接的 fastboot 设备最常用的连通性检查命令fastboot reboot重启手机刷完后退出 fastboot 用fastboot reboot bootloader重启到 bootloader一般不会用到因为已经在 bootloader 里了fastboot flash recovery recovery.img刷写 recovery 分区刷错机型镜像可能变砖fastboot boot recovery.img临时启动 recovery不写分区更安全fastboot flash boot boot.img刷写 boot 分区常用于刷入 Magisk 修补后的 boot 镜像fastboot flash vbmeta vbmeta.img刷写 vbmeta 分区某些第三方系统需要禁用 verity 时使用需谨慎fastboot erase userdata清除用户数据分区相当于恢复出厂设置刷机前双清常用fastboot getvar all查看全部 fastboot 变量可查看机型、分区槽位、anti 等关键信息fastboot oem unlock解锁 bootloader小米手机建议用官方 MiUnlock不推荐此命令fastboot erase userdata这个命令执行后手机里的所有数据都会被清空此操作不可逆执行前一定要确认没有重要数据。还有fastboot getvar all在刷入任何东西之前建议先执行一下看输出里的product、version-baseband、slot-count等字段确认固件包和当前机型匹配避免刷错。3.6 刷机完成后如何恢复系统并回锁刷机完成后通常会执行一次fastboot reboot重启手机。第一次开机可能会有点慢因为系统正在重建缓存和初始化数据分区耐心等几分钟是正常的。如果刷入的是第三方 ROM开机后记得重新打开开发者选项和 USB 调试方便后续继续操作。关于“回锁 Bootloader”也就是重新上锁我的建议是如果不是要把手机拿去售后或者想恢复成完全官方状态没必要回锁。回锁后某些第三方 ROM 或 Recovery 可能无法正常工作而且回锁操作本身也会再次清空数据。如果确定要回锁用官方 MiUnlock 工具不能完成需要 fastboot 命令手动处理。回锁前要先刷入完整的官方 ROM 包确保所有分区都是官方的再执行fastboot oem lock执行后会进入确认流程音量键选择确认后设备会清空数据并重启。这个操作一旦执行第三方 Recovery 和 Magisk 都会被清除所以真的要想清楚再动手。我在实际应用中很少主动回锁除非手机要送修或出售。4. 常见问题与排查技巧实录4.1 adb unauthorized 的解决办法这是 Mac 下刷机时最常见的问题之一。执行adb devices看到状态是unauthorized说明电脑和手机之间通信建立了但手机端没有允许这台电脑进行调试。解决办法按顺序试重新插拔数据线看手机屏幕是否重新弹出授权弹窗。如果没弹去开发者选项里点“撤销 USB 调试授权”然后重新插拔。检查是否装了手机管家类 App部分安全软件会拦截 USB 调试授权弹窗。实在不行重启手机再试一次。在 Mac 下多一个排查点如果之前用另一台电脑连接过这部手机手机端记录的授权指纹和当前电脑不匹配需要在手机端清掉旧授权。操作路径就是上面的第 2 步。4.2 fastboot 连接不到设备的原因fastboot devices没反应这个问题在 Mac 上通常有几种原因。一是数据线不支持数据传输前面说过换根线。二是 USB 端口供电不足尤其笔记本的某些接口只有充电能力换一个接口再试。三是 fastboot 驱动问题虽然 Mac 不需要安装官方驱动但 macOS 对 USB 设备的识别有时会抽风重启电脑或换个 USB 口能解决。四是进入 fastboot 的方式不对比如用按键组合进入时松手太慢或太快手机可能直接开机了而非进入 fastboot。还有一种比较隐蔽的情况手机 fastboot 模式显示正常fastboot devices也能看到设备但执行 flash 命令时提示FAILED (remote: not allowed in locked state)这说明 Bootloader 还没解锁。解决方法是先完成解锁流程再来刷机。4.3 Mac 下 ADB 相关的其他高频问题adb: command not found是最经典的报错。命令找不到说明 ADB 工具没装好或 PATH 没配置对。如果是用 Homebrew 安装的先确认brew list android-platform-tools能查到如果确认装了但命令还是找不到检查~/.zshrc或~/.bash_profile里的 PATH 配置确保包含/opt/homebrew/binApple Silicon 芯片或/usr/local/binIntel 芯片。还有人在用 adb 无线调试时遇到问题。无线调试需要先用 USB 连接建立信任然后执行adb tcpip 5555 adb connect 手机IP:5555配好之后拔掉数据线也能用。但如果电脑和手机不在同一个网段或者手机有防火墙类应用拦截端口连接会失败。无线调试这个功能在有线连接不可用或数据线损坏时是救急的好办法但要注意Mac 睡眠唤醒后无线连接可能会断开重新adb connect一下就好。4.4 实操问题速查表问题现象可能原因解决方案adb devices列表为空数据线不支持数据传输换原装线或品牌数据线adb devices状态为 unauthorized未点允许授权弹窗重新插拔撤销授权后重试adb devices状态为 offlineADB 版本过旧brew upgrade android-platform-toolsfastboot devices无输出未正确进入 fastboot 模式重新按键进入换 USB 口fastboot 执行 flash 报 locked 错误Bootloader 未解锁先通过官方 MiUnlock 解锁adb: command not found未安装或 PATH 未配置安装 platform-tools 并检查 PATHHomebrew 安装超时网络无法稳定访问官网配置国内镜像源后重试Mac 无法运行 MiUnlock小米解锁工具只有 Windows 版使用 Windows 虚拟机5. 经验总结与最后的小提醒整个流程走下来我个人最大的感受是Mac 刷机看起来步骤多但每一步只要搞清楚“为什么”执行起来其实很顺。命令行的东西看着唬人本质上就是把你在 Windows 上点按钮的动作翻译成了一句句指令指令出错时日志反而更清晰定位问题更快。几个小提醒送给准备动手的朋友。第一刷机有风险操作前务必保证手机电量在 50% 以上别刷到一半断电变砖。第二新手第一次刷机建议先从临时启动第三方 Recovery 开始练手不要一上来就直接刷写分区这样即使出了问题重启一下手机还能恢复正常系统。第三下载任何 ROM 包或 Recovery 镜像时认准官方或知名论坛的长期维护帖子别随手下载来路不明的文件轻则刷完各种 Bug重则变砖。第四多备份多备份多备份。解锁和刷写分区的操作都会清空数据云端网盘、电脑本地、U 盘各留一份最稳妥。最后再分享一个我在实际操作中发现的省事技巧把常用的刷机命令打包成一个 Shell 脚本放在桌面比如flash_recovery.sh每次双击终端里跑一下就能自动执行一堆命令省得反复手打。脚本内容很简单无非就是把adb devices、fastboot devices这些检查命令和执行命令串起来中间用或;分隔注意判断每个步骤的输出是否正常即可。这样既降低了手误概率也方便以后给别人分享经验。
返回列表