2.2 FastBoot刷机

昨天对Android源码进行了编译,那今天就尝试把编译后的系统刷入手机中吧。

一. 概述

  1. 升级手机系统
    在编译完系统,或通过其他途径获取到刷机包(如:Google Android官方Image),就会尝试对手机进行刷机升级。

  2. 刷机的本质是利用Fastboot进行刷机
    市场中有很多的刷机软件,也倒下了很多,如:刷机精灵就到了。它们仅仅是可视化刷机,并搜集了一些可供刷机的包。但是它比直接操作FastBoot慢多了,需要检测很多。

  3. 第三方刷机包
    除了各厂商提供的刷机包,还有第三方提供的刷机包,这些刷机包中可能集成了一些广告、第三方app,可能是厂商的开发人员提供的。

  4. 刷机是小众的
    大多数情况下是一些开发人员的爱好,但没有人会一直刷机,也不可能把一个第三方包刷成流行。

  5. 刷机包需要硬件支持
    不同手机有不同的硬件条件和版本,刷机不当就会开机变板砖。

二. 刷官方包

2.1 前提
  1. 背景
    利用Google Android官方Image提供的各个官方手机刷机包,进行刷机,了解整个刷机流程。

  2. 硬件条件

    • 手机:Nexus 5,2013,2G RAM,16GB存储。
    • 电脑:Macbook Pro 13
  3. 软件条件
    Android开发环境是可用的,如果未OK,可查看Android开发环境搭建;FastBoot是Android Sdk提供的工具。

  4. 网络环境
    可能需要翻墙下载,也可以找国内的镜像地址下载。

2.2 下载
  1. Nexus 5 Image
    在Google Android官方Image找到Nexus 5相关的Image;可看出官网最新的Image是2016年提供的,可能后续的版本对硬件的要求更高,所以没有提供新的。

    Nexus 5 Image

  2. 下载并解压缩
    下载最新的、相关Image压缩包,并解压缩。


    解压缩
  3. 结构并移动

  • 解压缩包结构


    压缩包结构
  • 移动文件
    把上图中红色标记的文件,由子目录移动到父目录,以便于刷机。移动后变成:


    各种img
  • 文件作用

    • android-info.txt
      标记刷机的信息。
    • boot.img
      启动
    • bootloader-hammerhead-hhz20h.img
    • cache.img
      缓存数据
    • radio-hammerhead-m8974a-2.0.50.2.29.img
    • recovery.img
      用于手机恢复出厂设置的img。
    • system.img
      手机系统文件。
    • userdata.img
      用户数据
2.3 刷机
  1. 进入刷机模式

    • 开机下,adb命令下进入刷机模式
      这证明adb 命令可用。

      adb reboot bootloader
      
    • 关机下,快捷键进入刷机模式


      快捷键
  2. 打开锁

    fastboot oem unlock
    
    • 备注1:Nexus5是2013款,所以用旧命令。新款用“fastboot flashing unlock”命令,或通过在开发者模式下,找到OEM解锁选项,选择启用。
    • 备注2:手机会提示是否解开OEM锁,通过音量键上下进行选择,然后按开关机键确认。
  3. 快速刷机

    fastboot flashall -w
    

    是按flash-all.sh中的内容进行刷机。其具体过程为:


    flash-all
    • fastboot: error: ANDROID_PRODUCT_OUT not set错误
      第一次fastboot刷机会出该问题,在mac用户目录下的.bash_profile配置ANDROID_PRODUCT_OUT。并重新启动bash。如:

      fastboot error

    • 匹配错误

      匹配错误

      • 问题说明
        Nexus原系统要求version-bootloader的版本是“HHZ20h”,而刷的官方包中的version-bootloader版本为HHZ12k,所以无法刷机。同一刷机包不存在该问题
      • 解决方案一
        手动修改官方包中version-bootloader的版本为“HHZ12k”,并修改android-info.txt中的version-bootloader说明。然后再尝试。
      • 解决方案二
        手动刷机,可避免出现匹配问题。
    • 无限重启
      快速刷机后,手机无限重启。一直处于开机动画界面。解决步骤:

      • 方案一 :关闭锁后尝试重启,OK。
        • 强制关机
          长按开关机键 + 上下音量键,强制关机。
        • 音量下键 + 开关机键,进入boot界面。
        • 尝试关闭锁,再开机。
          fastboot oem lock
          
      • 方案二:参考Nexus 5刷机重启,手动清除分区,并手动刷各个分区img,然后关闭锁后再开机,可解决问题。
  4. 手动刷机

    fastboot erase cache
    fastboot erase userdata
    fastboot erase boot
    fastboot erase cache
    fastboot erase recovery
    fastboot erase system
    
    fastboot flash bootloader bootloader-hammerhead-hhz20h.img
    fastboot reboot-bootloader
    
    fastboot flash radio radio-hammerhead-m8974a-2.0.50.2.30.img
    fastboot reboot-bootloader
    
    fastboot flash recovery recovery.img
    fastboot flash boot boot.img
    fastboot flash system system.img
    fastboot flash cache cache.img
    fastboot flash userdata userdata.img
    
  5. 关锁,再开机

    fastboot oem lock
    
  6. 其它问题

    • 一直处于开机画面
      重新刷机,所有流程重新走一遍。这时候可以通过fastboot flashall -w进行刷机,然后关锁再开机。

三. 编译包刷机

因为个人原因,无法编译完成Android源码,待补充。

四. 参考文档

  1. 刷机要求
  2. 刷写设备

你可能感兴趣的:(2.2 FastBoot刷机)