Nexus6p 刷机指北

作为 Android 开发者,肯定要对各种 Android 手机都非常熟悉(但是却使用 iPhone),那自然也不能少了 Google 亲儿子中的 Nexus 系列了,为了体验一下原生 Android 的流畅和官方全家桶的舒适体验,我在某宝上面弄了一台 450RMB 的 Nexus6P,这几天拿到了,准备鼓捣鼓捣,学习一下

首先踩的坑肯定就是网络相关的了,因为众所周知的原因,这个亲儿子无法与亲爹服务器取得联络,所以即使是连上了正常的 WiFi,也非常调皮地在右上角显示“已连接,但无法访问互联网”,只有当你不断点击跳过各种设置后,才可以上网,但是右上角仍然是显示一个带叉叉的 WiFi 图标,用以提醒你当前的网络不是稳定的科学的网络

既然这篇想讲刷机,现在又已经能上网了,先来研究下刷机和 root 是怎么回事,网络这个问题,就留待以后再研究了

开始刷机

我拿到手机的时候,店家就已经帮我刷了 8.1.0 版本的 Android,想要刷机,先去看看都有些什么镜像,因为是入门,这里就直接去下载官方镜像,以后再看看其他各种魔改的镜像,拿到想要刷的镜像之后,有以下几个步骤:

  1. 配置 ADB 环境变量(SDK)

    搜索下载 ADB,这里不再赘述,ADB 的相关指令可以自行 Google

  2. 安装 ADB 手机驱动

    只要下好ADB,连接上手机,电脑会自动下载并为手机安装上驱动,这里也不赘述

  3. 解锁 BootLoader

    手机关机后,长按音量-和电源键,一直到看见一个盖子打开躺在地上的安卓机器人为止。这时就已经进入了 fastboot 页面了,这时可以看到左下角的一些关于手机的信息

    图片名称

    其中有一条 Device is LOCKED ,那现在就来解锁设备,命令行输入:

    1
    fastboot devices

    检查链接设备

    前边的序列号就是你的设备的Serial Number(序列号),后边为fastboot链接,如果得不到这样的结果,可能是 adb 和驱动没有配置好。弄好了继续输入

    1
    fastboot oem unlock

    手机会跳转到一个页面,问你是否解锁,但是这时我遇到一个报错,提示未知命令

    看了下官方文档,也就是上方的下载镜像文件的网址,原来是指令已经更换为:

    1
    fastboot flashing unlock

    输入后,正确跳转到询问是否解锁的页面

    图片名称

    按音量上键,选择 yes,点击电源键确定,稍后手机会重启进入 recovery,重启就好了,可能时间比较长,静静等候。(在这一步中,已经刷入第三方 recovery 的话,重新解锁会卡死在开机动画,或者在开机画面不断循环,还要重新刷镜像,但是不要重刷 recovery,重刷 recovery 会把之前的第三方刷掉)重新进入 fastboot 界面,方法同上。

    图片名称

    你会看到 Device is UNLOCKED 至此解锁完毕,要重新上锁也很简单,在 Bootbloader 下输入命令

    1
    fastboot flashing lock

    Bootloader 会重新上锁。

  4. 线刷

    前面操作都结束且成功,就可以开始线刷系统了,什么是卡刷和线刷呢?参考:线刷和卡刷的区别以及步骤

    • 卡刷

      卡刷就是通过内存卡给系统升级。在Android系统早期因为绝大多数手机自带的内存就比较小,所以都要借助外置SD卡来存放照片、音乐等。因为ROM刷机包体积都比较大,所以要将ZIP格式刷机包事先放入内存卡中,再通过第三方的recovery来将系统刷进去。(官方的recovery的没有提供相应的功能参考)

      • 优点:方便、简单,刷机方法通用,不会破坏手机底层数据(所以理论上卡刷是不会将硬件刷坏);
      • 缺点:需要借助第三方recovery,个别品牌或者机型需要事先获得ROOT权限才能够进行;

      卡刷包一般是指代ota格式的更新包,它需要拥有差分更新的能力(在某些场合,卡刷包只包含新旧文件的差别以节省空间。如果不使用这个特性,ota格式的包也可以接近成为完整的刷机包),因此需要一个能操作单个文件的平台上才能执行,这个平台就是recovery

      • 卡刷包内部结构
        • system(系统apk文件)
        • META-INF(签名信息)
        • boot.img(内核)等文件夹和文件
    • 线刷

      通过数据线连接电脑来进行刷机,一般适用于官方的刷机包。也可以通过 fastboot 刷入第三方 recovery,通过如三星通过 KIES、ODIN,HTC 通过 RUU、索尼通过 flashtools 强刷工具等刷入

      • 优点:可以进行底层修复,一般在升级过程中可直接将 bootloader、基带等一并升级,可在卡刷失败时可以使用官方刷机包进行救砖。
      • 缺点:操作步骤繁琐,刷机工具调试复杂,刷机包必须和手机销售地对应,刷机过程中出现问题可能导致手机无法修复。

      线刷包格式多种多样有:三星的是 .tar、.md5等,索尼为.ftf,HTC 为.exe等

    简单了解了一下这两种刷机方式,然后解压我们下载好的系统镜像:

    再把 image-angler-opm7.181205.001.zip 解压出来,得到一些 Recovery 和 system 的 img 文件,放到同一目录下,cd 进入此文件夹,依次执行:

    1
    2
    3
    4
    5
    6
    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

    或者其实可以不用解压,Mac 系统直接把 .sh 文件拉到终端中,或者 /flash-all.sh,Windows 系统双击打开 .bat 文件,就可以自动执行以上语句

    最后就刷机成功了,开机就可以进入手机设置流程

adb fastboot 常用命令及刷机技巧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
adb devices                         显示设备信息

adb install 123.apk 安装一个软件

adb uninstall -k 123.apk 删除一个软件

adb shell 进入shell环境

adb push c:/1.txt /sdcard/sdir/ 向设备推送文件

adb pull /sdcard/1.txt C:/ 从设备取回文件

adb reboot bootloader/recovery 使手机重启进入BL或RE

adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204
去除 WiFi 叹号, 貌似仅对 Android 7 有效

穿插题外话

本文有一些图片上传后旋转不正确,因为图片的 EXIF 里标记了旋转 Rotate 90 CW ,直接打开图片时 chrome 会自动调整过来,这时应该在图片链接尾部加上参数 imageMogr2/auto-orient,如your_image_path?imageMogr2/auto-orient,可以让图片正常显示,详情查看七牛云存储-图片高级处理原问题点击此处查看关于使用 HTML 语言调整 Markdown 中的图片的方法

有待更新

这次只是简单地了解了刷机的基本操作和基本常识,root 失败了,卡在不断地进入 recovery 那里。但是好在还可以通过暂停再继续来跳过那个 bootloader 的页面,而要彻底关闭 bootloader,就比较复杂了。另外网络的问题还没有弄好,也没有体验到 Google 全家桶的强大,以后如果有空再研究下(虽然是不大可能再鼓捣刷机的东西了),附上几篇参考的文章:


Nexus6p 刷机指北
https://enderhoshi.github.io/2018/12/05/Nexus6p 刷机指北/
作者
HoshIlIlI
发布于
2018年12月5日
许可协议