☰
Android的刷机模式
2026/11/6 3:08:57 网站建设 项目流程

高通为例子。不看不知道,一看原来这么多。想以前做博通方案,就是一个web刷机包刷到死。到底是技术进步了还是以前太浅薄?!。。。(博通刷机应该也是很多种,web只是比较方便的一种)

基本参考这篇:https://www.cnblogs.com/bluestorm/p/18129830

常用的应该就是OTA,FastBoot。EDL好像都很少用吧,不过今天确认用到了,还让我自己去焊接,我真无语了。。。

不过EDL模式不懂也正常,因为这个是高通独有。感觉有点类似JTAG那种刷机吧。我的理解OTA是操作系统层面的升级,FastBoot是bootloader层面的升级,EDL就是类似JTAG的层面,网上很多叫做9008升级,是因为用的COM9008。在使用EDL的时候,还要安装高通的QFIL工具,应该熟悉一下就好。

开机模式屏幕显示冷启动热启动按键退出典型命令
Android/NormalAndroid界面按Power键adb reboot手机短按,VR长按Power键
Recovery/OTA/卡刷Recovery界面按住OK键(Vol+)

再按Power键
adb reboot recovery长按Power键重启将官方 OTA 升级包放到手机存储中或使用 adb sideload update.zip
Fastboot/线刷Fastboot界面按住BACK键(Vol-)

再按Power键
adb reboot bootloader长按Power键重启fastboot flash boot boot.img
FFBM/Fast Factory/厂测/半开机显示测试列表misc分区头部为ffbm时

按Power键
misc分区头部为ffbm时,adb reboot长按Power键重启依然进入FFBM
EDL/紧急下载/9008/砖头/裸板无显示,黑屏同时按住OK键(Vol+)和BACK键(Vol-)

再按Power键
adb reboot edl

fastboot reboot emergency
长按Power键重启使用QFIL工具

========================20261105更新========================

做了2年再回来看,其实常用的刷机模式就两种。

1 Fastboot

  • 原理:利用设备引导加载程序(Bootloader)中的 Fastboot 接口,在电脑端通过fastboot命令行工具将镜像文件(如boot.img,system.img,vendor.img,super.img,init_boot.img)直接写入设备的物理分区。

  • 特点:底层、高效、常用于救砖、升级官方线刷包(Fastboot 脚本)或刷入自定义 Boot/Kernel 以获取 Root 权限。

  • 前提:必须先解锁 Bootloader(BL 锁)。

使用这个有时候需要安装对应的USB驱动。此外需要知道逻辑分区名称以及所使用的 Android 架构代际。

比如以前刷 Root(如 Magisk)都是修饰 boot.img 并刷入 boot 分区。在 Android 13+ 的新设备上,Boot 校验被移到了 init_boot.img,需要修饰 init_boot.img 并运行 fastboot flash init_boot magisk_patched.img。

可以使用以下命令:

# 1. 查询设备支持的所有分区名称及其属性 fastboot getvar all # 2. 查询设备当前的 A/B 槽位(如果是 A/B 结构) fastboot getvar current-slot # 3. 查询是否支持动态分区 (is-userspace) fastboot getvar is-userspace

这里有一个fastboot刷机的示例:

#!/bin/bash # 确保脚本在出错时直接退出 set -e echo "==========================================" echo " Android Fastboot 自动刷机脚本示例" echo "==========================================" # 1. 检查 fastboot 工具是否存在 if ! command -v fastboot &> /dev/null; then echo "[错误] 未找到 fastboot 命令,请先安装 Android Platform-Tools 并将其加入环境变量。" exit 1 fi # 2. 检测设备连接状态 echo "正在检测已连接的 Fastboot 设备..." FASTBOOT_DEVICES=$(fastboot devices | awk '{print $1}') if [ -z "$FASTBOOT_DEVICES" ]; then echo "[错误] 未检测到处于 Fastboot 模式的设备,请检查 USB 连接或驱动。" exit 1 else echo "成功检测到设备: $FASTBOOT_DEVICES" fi # 3. 询问用户是否需要清除用户数据(可选) read -p "是否需要执行格式化并清除用户数据 (Wipe/Format userdata)? [y/N]: " WIPE_DATA # 4. 开始刷入各项镜像 echo "------------------------------------------" echo "开始刷入底层引导与内核分区..." # 针对现代动态分区(Dynamic Partitions)设备的常用分区刷写 # 注:部分老设备或特定芯片可能没有 init_boot 或 vendor_boot,请根据实际镜像调整 if [ -f "boot.img" ]; then fastboot flash boot boot.img fi if [ -f "init_boot.img" ]; then fastboot flash init_boot init_boot.img fi if [ -f "vendor_boot.img" ]; then fastboot flash vendor_boot vendor_boot.img fi if [ -f "dtbo.img" ]; then fastboot flash dtbo dtbo.img fi if [ -f "vbmeta.img" ]; then fastboot flash vbmeta vbmeta.img fi echo "------------------------------------------" echo "开始刷入系统主镜像 (super.img,这可能需要几十秒)..." if [ -f "super.img" ]; then # 刷入 super 分区前有时需要擦除或调整大小,根据具体包而定 fastboot flash super super.img else echo "[错误] 核心镜像 super.img 不存在,无法完成刷机!" exit 1 fi # 5. 根据用户选择决定是否清除数据 if [ "$WIPE_DATA" = "y" ] || [ "$WIPE_DATA" = "Y" ]; then echo "------------------------------------------" echo "正在格式化用户数据区 (userdata & cache)..." fastboot -w else echo "已跳过用户数据清除(保留原有应用与配置)。" fi # 6. 重启设备 echo "------------------------------------------" echo "刷机完成!正在重启设备进入系统..." fastboot reboot echo "所有操作已执行完毕。"

2 EDL

  • 原理:通过短接主板上的 EDL 测试点(Test Point)、使用专用 9008 刷机线(工程线)或命令强制让高通芯片进入Emergency Download Mode (9008)。

  • 工具:使用QPST / QFIL(Qualcomm Flash Image Loader)或MiFlash,直接向闪存 UFS / eMMC 的最低层 Sector 写入数据。

  • 特点:不依赖 Bootloader 状态(即便 BL 被锁也能救砖),是高通设备的终极救砖手段(注:部分新芯片需要官方授权账号凭证签名)。

在实际开发中,EDL是最后手段,一般是直接短接电路板。然后使用高通的烧写工具。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询