昨天对Android源码进行了编译,那今天就尝试把编译后的系统刷入手机中吧。
一. 概述
-
升级手机系统
在编译完系统,或通过其他途径获取到刷机包(如:Google Android官方Image),就会尝试对手机进行刷机升级。 -
刷机的本质是利用Fastboot进行刷机
市场中有很多的刷机软件,也倒下了很多,如:刷机精灵就到了。它们仅仅是可视化刷机,并搜集了一些可供刷机的包。但是它比直接操作FastBoot慢多了,需要检测很多。 -
第三方刷机包
除了各厂商提供的刷机包,还有第三方提供的刷机包,这些刷机包中可能集成了一些广告、第三方app,可能是厂商的开发人员提供的。 -
刷机是小众的
大多数情况下是一些开发人员的爱好,但没有人会一直刷机,也不可能把一个第三方包刷成流行。 -
刷机包需要硬件支持
不同手机有不同的硬件条件和版本,刷机不当就会开机变板砖。
二. 刷官方包
2.1 前提
-
背景
利用Google Android官方Image提供的各个官方手机刷机包,进行刷机,了解整个刷机流程。 -
硬件条件
- 手机:Nexus 5,2013,2G RAM,16GB存储。
- 电脑:Macbook Pro 13
-
软件条件
Android开发环境是可用的,如果未OK,可查看Android开发环境搭建;FastBoot是Android Sdk提供的工具。 -
网络环境
可能需要翻墙下载,也可以找国内的镜像地址下载。
2.2 下载
-
Nexus 5 Image
Nexus 5 Image
在Google Android官方Image找到Nexus 5相关的Image;可看出官网最新的Image是2016年提供的,可能后续的版本对硬件的要求更高,所以没有提供新的。
-
下载并解压缩
下载最新的、相关Image压缩包,并解压缩。
解压缩 -
结构并移动
-
解压缩包结构
压缩包结构 -
移动文件
把上图中红色标记的文件,由子目录移动到父目录,以便于刷机。移动后变成:
各种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
用户数据
- android-info.txt
2.3 刷机
-
进入刷机模式
-
开机下,adb命令下进入刷机模式
这证明adb 命令可用。adb reboot bootloader
-
关机下,快捷键进入刷机模式
快捷键
-
-
打开锁
fastboot oem unlock
- 备注1:Nexus5是2013款,所以用旧命令。新款用“fastboot flashing unlock”命令,或通过在开发者模式下,找到OEM解锁选项,选择启用。
- 备注2:手机会提示是否解开OEM锁,通过音量键上下进行选择,然后按开关机键确认。
-
快速刷机
fastboot flashall -w
是按flash-all.sh中的内容进行刷机。其具体过程为:
flash-all-
fastboot: error: ANDROID_PRODUCT_OUT not set错误
fastboot error
第一次fastboot刷机会出该问题,在mac用户目录下的.bash_profile配置ANDROID_PRODUCT_OUT。并重新启动bash。如:
-
匹配错误
匹配错误
- 问题说明
Nexus原系统要求version-bootloader的版本是“HHZ20h”,而刷的官方包中的version-bootloader版本为HHZ12k,所以无法刷机。同一刷机包不存在该问题。 - 解决方案一
手动修改官方包中version-bootloader的版本为“HHZ12k”,并修改android-info.txt中的version-bootloader说明。然后再尝试。 - 解决方案二
手动刷机,可避免出现匹配问题。
- 问题说明
-
无限重启
快速刷机后,手机无限重启。一直处于开机动画界面。解决步骤:- 方案一 :关闭锁后尝试重启,OK。
- 强制关机
长按开关机键 + 上下音量键,强制关机。 - 音量下键 + 开关机键,进入boot界面。
- 尝试关闭锁,再开机。
fastboot oem lock
- 强制关机
- 方案二:参考Nexus 5刷机重启,手动清除分区,并手动刷各个分区img,然后关闭锁后再开机,可解决问题。
- 方案一 :关闭锁后尝试重启,OK。
-
-
手动刷机
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
-
关锁,再开机
fastboot oem lock
-
其它问题
- 一直处于开机画面
重新刷机,所有流程重新走一遍。这时候可以通过fastboot flashall -w进行刷机,然后关锁再开机。
- 一直处于开机画面
三. 编译包刷机
因为个人原因,无法编译完成Android源码,待补充。
网友评论