zoukankan      html  css  js  c++  java
  • [操作系统]记一次未尽的三星 Galaxy A6s(SM-G6200)刷机过程

    给女王大人刷机,第一次刷机,很遗憾,遇到了三星的“锁三键”问题,没有搞成。记录一下这个过程所涉猎的一些刷机基本知识,不妨当作一次学习过程。

    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调试功能

    • 进入开发者模式
    手机: 设置>关于手机>软件信息>(手指 连续点击多次,即可开启【开发者模式】)内部版本号
    
    • 开启USB调试功能

    通过设置界面进入开发者选项界面

    手机: 设置>开发者选项>(勾选)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

    参考: 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 CMD 命令

    更多命令,参见: 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 shell

    adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下
    更多命令,参见: adb下载安装及使用 - CSDN
    更多命令,参见: Android adb - CSDN

    cmd: adb shell dumpsys > D:ugreport.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模式)线刷法

    理论上,高通处理器都可以用这个方法

    • 前提条件
    1. 能找到要被刷手机型号的QPST专用刷机包
      (如果找不到,就没法)
    2. 确认手机能进9008端口
    • 使用的工具
    QPST
      QFIL
    
    • 原理
    高通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,然后选择上述合适的选项进行刷机。
    
    • 如何进入 Recovery 模式?
    [方法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 参考文献

    赞赏-支付宝二维码
    本文作者千千寰宇
    本文链接 https://www.cnblogs.com/johnnyzen
    关于博文:评论和私信会在第一时间回复,或直接私信我。
    版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
    声援博主:若本文对您有帮助,可点击右下角推荐一下。您的鼓励、【赞赏】(左侧赞赏支付码)是博主技术写作的重要动力!
  • 相关阅读:
    python threading 锁的应用
    python线程threading处理任务并发一
    *,arg,*args,**kwargs的使用
    web services 接口调用
    jsonp与ajax
    无缝滚动详解
    手机端使用rem适配
    css3写的实用表单美化
    经典仿淘宝商城菜单多条件查询
    css3 flex写的移动端界面
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/14674800.html
Copyright © 2011-2022 走看看