参照https://www.cnblogs.com/helloZQP/p/4198588.html
https://www.jianshu.com/p/d960a6f517d8
https://blog.csdn.net/s13383754499/article/details/82755012
- 刷机模式
分为线刷与卡刷
ful ota是卡刷包
factory image是线刷包
是相同内容的不同封包方式而已,可以相互转化
- 如何生成recovery.img和boot.img
这里介绍的是如何从手机设备里获取,本身源码编译的时候也会自动生成(有的编译模式不会生成这两个镜像)。
参照这篇文章https://blog.csdn.net/whu_zhangmin/article/details/24733677,但是它有点不准确:
dd if=/dev/block/mmcblk0p16 of=/storage/sdcard/recovery.img
不一定mmcblk0p16对应的就是recovery.img,不同的手机不一样。
怎么查看mmcblk0pxx对应的是哪个功能呢?https://blog.csdn.net/u014645605/article/details/52212622,用
ls -l /dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/
即可查看对应的名字,但是不同的手机mtk-msdc.0/11230000.msdc0这一段目录可能会不同,其它部分相同 。然后照葫芦画瓢,
dd if=/dev/block/mmcblk0p16 of=/storage/sdcard/recovery.img
导出对应的img文件。
- 坑
不是所有的手机都支持adb reboot bootloader,比如我的已经root了的Oppo R5sm,Color Os系统,一执行这个指令等于是重启了,无法进入fastboot模式。
Nexus 5刷机实战
从闲鱼买了个二手的Nexus5手机,初衷就是闲ubuntu emulator启动的镜像运行太慢了,想把镜像跑到真机上。为了减小出错的概率,我将刷机分为2步进行:先下载系统官方的镜像刷机,没有问题之后再刷自己编译的系统镜像。
https://blog.csdn.net/QQ1084283172/article/details/54562606
最新的官网不带flashall.bat,可以去下面的链接下载:
http://bbs.gfan.com/android-8383328-1-1.html
刷机之前,要弄清楚手机型号和操作系统的版本。
我的机型是Nexus 5,也就是HammerHead,操作系统型号KTU84P。
刷机前为了避免手机变成砖头,一定要先解锁:
http://www.yzmg.com/news/show-91662.html
对于新款设备(2015 年及之后发布的设备):` $ fastboot flashing unlock`
对于老款设备(2014 年及之前发布的设备):` $ fastboot oem unlock`
救砖方案:
https://tieba.baidu.com/p/5172448708?red_tag=0553550417
1.官方的系统镜像刷机
https://www.cnblogs.com/manqing/p/4634112.html
参照上面的博客去下载对应的工厂镜像,然后刷机。我采用的是flash-all.bat,一次性刷入所有镜像文件,然而手机并没有正常启动,而是一直卡在了LOGO界面(显示Google的界面),然后不但重启。
解决办法:
电源+音量减小键,重新可进入fastboot模式。然后参照https://blog.csdn.net/qq_30135181/article/details/89337294,为了避免博客网页不存在,我把文章粘贴出来。
问题解决-- 卡LOGO,无限重启
方案1
解压官方镜像包,然后进入目录,再解压镜像包中的zip文件
连接USB
重启手机进入bootloader模式(电源键+音量键-),直接利用fastboot 和adb命令线刷
#以下img包需要在对应目录中找到对应的名称
adb reboot bootloader //进入刷机模式
fastboot erase cache
fastboot erase userdata
fastboot erase bootfastboot erase cache
fastboot erase recovery
fastboot erase system
fastboot erase userdata
fastboot flash bootloader bootloader-xxxx.img
fastboot reboot-bootloader
fastboot flash bootloader bootloader-hammerhead-xxxx.img
fastboot reboot-bootloader
fastboot flash radio radio-hammerhead-xxxx.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 reboot 重启手机
可以把这些命令做成一个bat脚本:
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot flash boot boot.img
fastboot flash cache cache.img
fastboot flash ramdisk ramdisk.img
fastboot reboot
工厂镜像目录说明
https://blog.csdn.net/u012417380/article/details/72843185
2.使用自己编译的系统镜像刷机
通过上面的流程,我们已经知道怎么刷机了,然后就编译系统镜像进行刷机了。
参照https://blog.csdn.net/QQ1084283172/article/details/54562606,步骤大致如下:
1)根据机型,去官网下载驱动脚本,执行驱动脚本,生成驱动目录。
2)lunch对应机型的编译模式,然后进行编译。
我生成的镜像如下:
3)替换官方工厂镜像文件,然后再次刷机:
adb reboot bootloader
fastboot flashall -w
注意指定ANDROID_PRODUCT_OUT环境变量,就是你的各种.img的目录。
这里flashall还是和上面一样,开机卡在了LOGO界面,还是重复上面的https://blog.csdn.net/qq_30135181/article/details/89337294步骤进行刷机。
注意刷机后第一次启动,显示Google后再显示的android界面会等较长事件,属于正常现象。
3.刷机后遗症
- 1.刷机后adb devices显示offline
重新关闭打开一下usb连接即可