2015年6月7日

使用adb及fastboot进行刷机及安装程序

这周尝试着把Nexus 5刷了个Android M预览版来玩,结果刷好后10个App有9个都不能用。赶紧下了个5.1.1的工厂镜像想要刷回来——但是失败了。刷完后一直处于“更新应用程序——重启”的死循环中,无奈又重刷了一回。因为我想保留应用数据,所以7个镜像文件中userdata.img和cache.img没有刷。我后来分析这应该就是祸根的所在。于是我把脚本改了改,除了system.img没刷,其余6个都刷进去了(system较大,偷懒不想等太久)。这下可好,直接卡在开机的"Google"界面了。进入recovery mode双清也是相当慢,我一度认为双清也卡死,无法完成。

后来等了大约30分钟,双清总算是完成了。但还是卡在开机界面。当时已经坐上火车了,无奈只好在火车上赶紧把7个镜像全部重刷一遍,然后终于救回来了。但所有的App都没了,需要重新安装。哪知之前用钛备份做的备份在还原居然要我一个个点同意安装才能进行,所以干脆写了个脚本来批量安装。这里把刷机和安装App的脚本放上来,以备日后查阅。

  • 刷机
set bootloader=bootloader-hammerhead-hhz12h.img
set radio=radio-hammerhead-m8974a-2.0.50.2.26.img

pause
adb reboot bootloader
fastboot flash bootloader %bootloader%
fastboot flash radio %radio%
fastboot flash boot boot.img
fastboot flash recovery recovery.img
fastboot flash system system.img
rem 取消以下两行注释以抹除用户数据
rem fastboot flash cache cache.img
rem fastboot flash userdata userdata.img
echo Done.
pause

由于我在环境变量中配置了adb和fastboot的路径,所以可以在任意目录执行adb和fastboot,这比网上流传的将adb和fastboot放到system32下要好多了。对于脚本的前两行,由于最初不知道这个文件名后面那串版本号是不是每个版本都变的,所以先用变量摆在前面,有变化好改。但后来发现好像这个文件名是固定的。另外,如果刷入cache.img和userdata.img则会清空数据,脚本中这两行是注释掉了的。

  • App安装
   for %var in (*.apk) do adb install %var

执行上面的命令之前,需先在命令行中进入放置apk文件的目录,并打开USB调试模式。用adb install命令来装好处是不用一个个点确定安装,全程静默自动安装。

  • 修改Portal Server地址以消除墙内网络连接的叹号
adb shell "settings put global captive_portal_server www.v2ex.com"

其中,www.v2ex.com可替换为其他服务器,只要该服务器下的grenerate_204虚拟路径能返回204响应就行(即http://host_addr/generate_204)。

没有评论:

发表评论