目录
给女王大人刷机,第一次刷机,很遗憾,遇到了三星的“锁三键”问题,没有搞成。记录一下这个过程所涉猎的一些刷机基本知识,不妨当作一次学习过程。
1 刷机过程
Step1 查看手机基本信息
| step1.1 手机: 设置>关于手机 |
| 品牌: Samsung Galaxy A6s |
| 手机型号: SM-G6200 |
| 序列号(SN): xxxxxx |
| IMEI(卡槽1): yyyyyy1 |
| IMEI(卡槽2): yyyyyy2 |
| 硬件版本: REV0.5 |
| |
| 软件信息: |
| Android版本: 8.1.0 |
| 基带版本: G6200ZCU0ARK1 |
| 内核版本: 4.4.78-perf+ (gcc version 4.9.x 20150123(prerelease)(GCC)) cibuild@cibuild #1 Mon Nov 5 23:15:15 CST 2018 |
| 编译编号: OPM1.171019.026.G6200ZCU0ARK1 |
| Android安全补丁级别: 2018年10月1日 |
| |
Step2 下载刷机包,安装刷机所需软件
Step3 刷机
Step3.1 手机进入开发者模式
,并开启USB调试
功能
| 手机: 设置>关于手机>软件信息>(手指 连续点击多次,即可开启【开发者模式】)内部版本号 |
通过设置界面进入开发者选项界面
2 刷机知识科普
2.1 工具篇
2.1.1 ADB
| Android Debug Bridge(安卓调试桥) tools. |
| 它就是一个命令行窗口,用于通过电脑端与模拟器或者是设备之间的交互。 |
| |
| ADB是一个C/S架构的应用程序,由3部分组成: |
| + 运行在pc端的【adb client】 |
| 命令行程序”adb”用于从shell或脚本中运行adb命令。 |
| 首先,“adb”程序尝试定位主机上的ADB服务器。 |
| 如果找不到ADB服务器,“adb”程序自动启动一个ADB服务器。 |
| 接下来,当设备的adbd和pc端的adb server建立连接后,adb client就可以向ADB servcer发送服务请求; |
| |
| + 运行在pc端的【adb server】 |
| ADB Server是运行在主机上的一个后台进程。 |
| 它的作用在于检测USB端口感知设备的连接和拔除,以及模拟器实例的启动或停止。 |
| ADB Server还需要将adb client的请求通过usb或者tcp的方式发送到对应的adbd上; |
| |
| + 运行在设备端的常驻进程【adb demon (adbd)】: |
| 程序“adbd”作为一个后台进程在Android设备或模拟器系统中运行。 |
| 它的作用是连接ADB服务器,并且为运行在主机上的客户端提供一些服务。 |
- 如何通过 adb进入 手机设备的 Recovery模式、刷机模式、安装/卸载APK、...?
| step1 开启【开发者模式】,启用【USB调试】 |
| step2 【手机】连接【数据线】,数据线连接 【ADB工具】所在的【PC电脑】 |
| step3 ADB 操作 |
| 例如: cmd: adb devices 查看手机设备是否成功连接到ADB? |
参考: adb下载安装及使用 - CSDN
| 方法1: 最简单的方法,只下载adb压缩包去解压即可. |
| 链接:https://pan.baidu.com/s/1SKu24yyShwg16lyIupO5VA 提取码:ih0i |
| |
| 方法2: 安装 Android Studio IDE |
| 其内自带`ADB`工具。Studio的 SDK 管理器(File>Project Structure>SDK Location>Android SDK Location)会将其安装在 android_sdk/platform-tools/ |
参见: Android studio安装与配置 - 博客园
更多命令,参见: adb下载安装及使用 - CSDN
更多命令,参见: Android adb - CSDN
| adb install + 包名 |
| adb安装apk (覆盖安装是使用 -r 选项) |
| adb uninstall + 包名 |
| adb卸载apk |
| |
| adb connect + 设备IP |
| 网络连接Android设备 |
| |
| adb reboot |
| 重启Android设备 |
| adb reboot download |
| |
| adb devices |
| 获取连接的设备列表及设备状态 |
| adb devices -l |
| 获取连接的设备列表详细信息 |
| |
| adb get-state |
| 获取设备的状态 (设备的状态有 3 种,device:设备正常连接 , offline:连接出现异常,设备无响应 , unknown:没有连接设备) |
| |
| adb shell ps | findstr adbd |
| 查看运行在 Android 设备上的 adb 后台进程 |
adb 命令是 adb 这个程序自带的一些命令,而 adb shell
则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin
目录下
更多命令,参见: adb下载安装及使用 - CSDN
更多命令,参见: Android adb - CSDN
| cmd: adb shell dumpsys > D:\bugreport.log |
| 打印dumpsys、dumpstate、logcat的输出,并重定向到一个文件 |
| |
| 【pm:Package Manager】可以获取到一些安装在 Android 设备上的应用信息 |
| cmd: adb shell pm list package |
| 列出所有的应用的包名 (-s:列出系统应用 -3:列出第三方应用 -f:列出应用包名及对应的apk名及存放位置 -i:列出应用包名及其安装来源) |
| cmd: adb shell pm path + 包名 |
| 列出对应包名.apk 位置 |
| cmd: adb shell pm install + apk存放路径 |
| 安装应用(目标apk 存放于PC端,用 adb install 安装;目标apk 存放于Android设备上,用 pm install 安装) |
| cmd: adb shell pm clear com.google.android.inputmethod.pinyin |
| 清除应用数据 |
| |
| 【am: Activity Manager】 |
| cmd: adb shell am start + 包名/.Activity (要启动的Activity) |
| 启动一个 Activity (-s先停止目标应用,再启动 -w 等待应用完成启动 -a 启动默认浏览器打开一个网页例:adb shell am start -a android.intent.action.VIEW -d http://testerhome.com) |
| cmd: adb shell am startservice |
| 启动一个服务 |
| cmd: adb shell am force-stop 包名 |
| 后跟对应的包名,结束应用 |
| |
| 【input】 |
| cmd: adb shell input text + 具体内容 |
| 发送文本内容,不能发送中文 |
| cmd: adb shell input keyevent + 按键事件 |
| 发送按键事件 |
| adb shell input keyevent KEYCODE_HOME |
| 模拟按下Home键 |
| cmd: adb shell input swipe 滑动事件 |
| 例如:从右往左滑动屏幕: adb shell input swipe 800 600 100 600 |
2.1.2 QPST: 高通(线刷)刷机工具
| QPST |
| := 高通QPST(线刷)刷机工具 |
| := Qualcomm Product Support Tool |
| := 高通产品支工具 |
| := 一个针对高通芯片开发的传输软件 |
2.1.3 Odin : 三星官方(线刷)刷机工具
2.1.3 KingRoot(获取Root权限的工具)
2.2 方法篇
刷机的实现方式,总的分为:卡刷和线刷。
2.2.1 卡刷法 : zip安装包(rom包)
| 卡刷法 |
| 在SD card 中进行。 |
| 一般是在recovery模式里进行的。 |
刷机包就两种:不是卡刷包,就是线刷包。
| 卡刷包 |
| 即 rom 包,一般是一个 zip 压缩文件,里面有 system 文件夹和其他一两个文件夹。 |
| 卡刷包一般是指代ota格式的更新包,它需要拥有差分更新的能力(在某些场合,卡刷包只包含新旧文件的差别以节省空间。如果不使用这个特性,ota格式的包也可以接近成为完整的刷机包)。 |
| 因此,需要一个能操作单个文件的平台上才能执行,这个平台就是recovery。 |
| 刷机包的格式:卡刷包肯定是*.zip压缩格式。 |
| 卡刷包: |
| 卡刷包只有一个格式,那就是.zip,有些卡刷包的命名更加简单粗暴,就叫做:update.zip; |
| 线刷包: |
| 而线刷包的格式有很多种,比如.tgz、.pac、.tar、.qsb等等(线刷宝可以解析以上种种格式)。 |
| 所以,如果您的刷机包不是.zip的格式,那么肯定是线刷包; |
| 不过.zip的不一定是卡刷包,有些线刷包也会压缩成这个格式。 |
| 刷机包的目录: |
| 卡刷包: |
| 打开卡刷包后里面肯定会有 system 和 META-INF 文件夹 |
| 一般来说,卡刷包体积较小,解压缩之后,里面的文件也较少,而且主要文件都在system的文件夹中。 |
| 线刷包: |
| 而线刷包解压缩后,文件较多,而且有很多的img文件 |
| |
| 注意: 真正刷机的时候不需要解压缩。卡刷法:直接将.zip的文件放到内存卡,线刷直接使用刷机工具解析即可! |
2.2.2 线刷法 : 非zip安装包(系统底包)
| 线刷法 |
| 依赖于: 数据线、PC电脑、线刷的PC端刷机工具(Odin、QPST、MiFlash等) |
| 线刷是指使用USB线连接个人计算机,并在个人计算机上使用刷机软件进行刷机的行为; |
| 而卡刷则是把固件或者升级包拷贝到手机SD卡中进行刷机升级操作; |
| 一般在刷机模式下进行 |
| 线刷更彻底,一般重大的版本还是线刷更好一点。 |
| 线刷包一般包含各个分区文件,相当于从底层把整个手机刷机,卡刷包一般只包含system和boot(当然也有特例,像oppo)。 |
| 有些线刷包也可以做成卡刷,像htc的ruu可以提取做成卡刷包,用fastboot刷机。 |
| 并不是说线刷包就能救砖,这句话太绝对,太笼统了,有些机器线刷包也不一定能救,真正的黑砖,htc的,官方线刷包不一定能救活。 |
| 可靠性/是否需要与电脑交互/失败率: |
| 通常认为卡刷更加可靠,因为它不会和电脑交互。 |
| 失败的几率比线刷低。因为线刷的时候,电脑,连接线出问题都可能影响到结果。 |
| 而卡刷只要手机和存储卡不出问题,通常都不会出现失败的情况。当然仁者见仁智者见智,大家最终的目的还是为了手机刷机成功达到理想的体验效果! |
| |
| 刷机的彻底性: |
| 线刷更胜一筹。 |
这个问题我的回答是不行,虽然也有听说过有某些可以转换着用,但一般不建议。
一是麻烦,二是容易出现错误。
一般建议直接使用对应类型的刷机包进行操作,这样可以避免不必要的错误。
| 线刷包 |
| 即 系统底包,一般是 tg 压缩文件,里面是一大堆 img 文件,某些底包里也有文件夹。 |
| 线刷包一般是分区镜像,一般需要在下载模式,直接访问闪存。这个状态下闪存上的内容都可以改动,甚至包括软件层的bootloader,比方说android的通用下载模式fastboot。 |
1)高通QPST(9008模式)线刷法
理论上,高通处理器都可以用这个方法
- 能找到要被刷手机型号的QPST专用刷机包
(如果找不到,就没法)
- 确认手机能进9008端口
| 高通QPST线刷法,其实就是利用高通芯片自带的9008端口,将手机系统内的所有分区的镜像文件,直接刷写手机。 |
| 这个刷机方式比REC卡刷、fastboot线刷,更底层、高效、强大。 |
| 这种方式,不需要进入手机的任何分区,就可以直接刷写手机固件。 |
| |
| 与其它方法比较: |
| REC卡刷法: 必须要手机能进入recovery模式,并且要是第三方rec才能随意刷zip卡刷包。 |
| Fastboot线刷法:要求手机能够进入fastboot模式,而且没有锁定bootloader;否则,也无法刷入各种刷机包和分区镜像文件。 |
| |
| 而高通线刷可以刷写包括fastboot所在的bootloader分区、boot启动分区、recovery恢复分区在内的所有分区。 |
| 甚至,可以改写手机分区表。就算手机开不了机了,一样可以刷入,只要9008端口能连接就可以刷。 |
| 这就是高通线刷既可以刷入系统,又可以救砖的原理。 |
| 从理论上讲,高通平台的手机在硬件不出问题的情况下是刷不死的(手动滑稽)。 |
参见此文: 高通9008刷机 - CSDN
2.3 补充篇
2.3.1 三星刷机模式 := 挖煤模式 != Recovery模式
三星手机刷机时需要进入独有的【挖煤模式】,通过 三星的官方刷机工具Odin
进行刷机;
| 【挖煤模式】 |
| 就是三星的系统升级模式、刷机模式。 |
| 名称的来源: |
| 以前三星老的安卓刷机界面上是个安卓机器人在挖煤(也有说是挖坟),所以才叫【挖煤模式】 |
| 早期三星手机Galaxy S(I9000)时代,刷机模式进入后会看到一个黄色三角形,内部有一个Android机器人挖煤的图标,该模式下能够连接电脑,使用ODIN工具进行刷机,我们叫该模式为【刷机模式】。 |
| 如今,三星已经将刷机模式的图标改变成绿色Android机器人,但是还是有以往的老用户一直称之为【挖煤模式】。 |
| 线刷的前提: 进入挖煤模式 |
| 用三星官方刷机工具Odin工具进行【线刷】时,必须进入此模式才能刷机。 |
| 卡刷:可不需进入挖煤模式 |
| 卡刷的前提是需要刷入第三方recovery,而刷recovery又必须用Odin工具线刷 |
| 但有些手机出厂时被【锁三键】、有些手机实体键损坏,无法同时按住三键进入“挖煤”模式。 |
| 【解决方法(不用按键也可进入“挖煤”?)】通过 ADB 工具 进入 挖煤模式 |
| |
| fastboot模式 、挖煤模式: |
| 都是刷机模式,也就是通过电脑线刷,如SONY、联想刷机用fastboot,而MOTO和三星都有专门的刷机软件。 |
| 挖煤模式是特指三星的刷机模式。 |
| 因为:三星手机进入刷机模式后有一个机器人在挖煤,所以三星的刷机模式又叫挖煤模式。 |
| 进入方式也因品牌不同而不同,三星在关机状态下同时按住音量下+HOME+电源键进入。 |
| [方法1: by 按键法] |
| 音量下键 + Home键 + 电源键 |
| |
| [方式2: by adb 工具] |
| step1 打开手机USB调试,并用USB数据线连接电脑 |
| step2 打开adb工具 |
| step3 cmd: adb devices |
| 回车,查看手机是否成功连接 |
| step4 cmd: adb reboot download |
回车后就手机就重启进入“挖煤”模式了,图上界面是较新的“挖煤”界面了,以前老的界面上是个机器人在挖煤(也有说是挖坟),所以才叫“挖煤”模式
2.3.2 Recovery模式
| Recovery模式: |
| 恢复模式,可进行卡刷、清除数据等功能; |
| 进入方式各个品牌的手机不同。 |
| 三星品牌Recovery模式下刷机:在关机状态下,同时按住音量上+HOME+电源键进入,有的手机没有Recovery模式,如SONY |
| reboot system now 立即重启系统 |
| wipe data/factory reset 清空data分区所有数据并恢复出厂设置 |
| wipe cache partition 清空cache分区所有缓存 |
| apply update from ADB 从ADB进行更新。 |
| ADB: ADB驱动是Android设备(如手机)连接PC时所需的应用程序。 |
| apply update from cache指从手机内存中的升级包升级 |
| apply update from internal storage 从内部闪内存更新(手机内存卡 上还原,你可将原备份好的系统镜像放在内存卡上) |
| apply update from internal sdcard 从外置SD卡更新(手机外置SD卡上还原,你可将原备份好的系统镜像放在SD卡上) |
| apply updata from sdcard 刷机包来自内存卡 |
| apply update from external storage 从外部的存储应用中进行更新 |
| apply update from external sdcard 从外部SD卡应用更新 |
| install zip from sdcard 从SDcard选择文件更新系统 |
| apply sdcard:update.zip 使用SD卡根目录的update.zip更新系统 |
| choose zip from sdcard 从SD卡选择zip格式升级包 |
| apply update from otg udisk 适用于从OTG U盘更新 |
| toggle signature verification 切换签名验证 |
| toggle script asserts 切换升级脚本检查 |
| backup user data:备份用户数据 |
| restore user data:恢复用户数 |
| --Backup 备份 |
| --Restore 恢复 |
| --Advanced Restore 高级恢复 |
| --mounts and storage 挂载和存储 |
| --mount /system 挂载/system分区(系统分区) |
| --mount /data 挂载/data分区(数据分区) |
| --mount /cache 挂载/cache分区(缓存分区) |
| --mount /sd-ext 挂载/sd-ext分区(A2SD分区) |
| --format boot 格式化内核分区 |
| --format system 格式化系统分区 |
| --format data 格式化数据分区 |
| |
| --format cache 格式化缓存分区 |
| --format sdcard 格式化存储卡 |
| --format sd-ext 格式化内存卡SD |
| --mount USB storage 挂载SD卡为U盘模式 |
| --advanced 高级 |
| --Reboot Recovery 重启Recovery |
| --Wipe Dalvik Cache 清空Dalvik缓存 |
| --Wipe Battery Stats 清空电池状态 |
| --Report Error 报告错误 |
| --Key Test 键位测试 |
| --Partition SD Card 对SD卡分区 |
| --Fix Permissions 修复权限 |
| 手机即进入 Recovery 模式后,一般都是先进行双wipe,然后选择上述合适的选项进行刷机。 |
| [方法1: 按键法] |
| Samsung Galaxy A6s (SM-G6200): |
| 手机关机; |
| 音量+键、电源键,二键齐按 |
| |
| [方法2: by adb 工具] |
| step1 打开手机USB调试,并用USB数据线连接电脑 |
| step2 打开adb工具 |
| step3 cmd: adb devices |
| 回车,查看手机是否成功连接 |
| step4 cmd: adb reboot recovery |
三星锁三键问题
| 锁三键: |
| 就是指不能通过"电源键+HOME键+音量键下"的三键组合进入刷机模式(挖煤模式); |
| 是三星为了避免用户自行刷非官方ROM而在某批次后取消这个功能的。 |
| 避免用户自行刷机,导致刷错版本,或者刷机失败造成开不了机。 |
| |
| 怎么解锁三键 |
| 如何【辨别】购买的手机是否【锁三键】呢? |
| 关机状态同时按音量下+主页健+电源三个按键,如果无法进入刷机模式界面(即 三星 挖煤模式),那就是【锁三键】的机器。 |
X 参考文献
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C#多线程编程精要:从用户线程到线程池的效能进化论
· 如何反向绘制出 .NET程序 异步方法调用栈
· 领域驱动设计实战:聚合根设计与领域模型实现
· 突破Excel百万数据导出瓶颈:全链路优化实战指南
· 如何把ASP.NET Core WebApi打造成Mcp Server
· C#开发的Panel滚动分页控件 - 开源研究系列文章
· 如何反向绘制出 .NET程序 异步方法调用栈
· ShadowSql之开源不易
· Java 原生异步编程与Spring 异步编程 详解
· 上周热点回顾(5.5-5.11)
2018-04-18 [C++]PAT乙级1010. 一元多项式求导 (25/25)
2018-04-18 [C++]PAT乙级1009. 说反话 (17/20)