因为个人项目上的需要,我从某宝入手了一款二手的Google Pixel 欧版手机。当初选择时主要是考虑到它的大内存–4G内存,可以流畅运行常用的程序。(不过入手之后的感觉就是,要想用好Google的手机,「科学上网」是必备的技能,否则的话,还是用国内的手机吧!)
因为需要在手机上安装按键精灵的手机版app,而调试按键精灵的脚本又需要获取手机的Root权限,所以就开始了我的Pixel刷机之旅。
准备工具
- Google Pixel手机 欧版(国际版)
- Android 8.1.0
- Windows或Mac
- twrp
- Magisk
- ss
欧版判断
点击Settings(设置) -> System(系统) -> About phone(关于手机) -> Regulatory labels(监管标签) 查看。
MODEL: G-2PW4200 ,其中 4200
表示欧版,4100
表示美版。
解锁Bootloader
(注意:解锁 Bootloader 重置设备数据,请注意备份。一定不要忘记退出你的Google账号和取消指纹识别及锁屏设置。)
由于我的手机是新买的,所以这些操作就免了。
开启USB调试和OEM解锁
安装「科学上网」工具,并成功接入互联网。
选择 「设置-系统-关于手机-版本号」,猛击「版本号」7次开启 「开发者选项」。
返回「上一页」,在「开发者选项」中开启「USB调试」和「OEM解锁」两个选项。如果「OEM解锁」选项显示为灰色,请检查网络连接是否正常。
通过数据线将手机连接至电脑,此时,手机端会弹出 USB 调试申请,点击「允许」。
可以通过命令 adb devices
来验证是否允许adb调试:
1 | ➜ adb devices |
进入 Bootloader模式
进入bootloader默认有两种方式,第一种是通过在关机状态下「按住电源键+音量减少键」;第二种是通过「ADB命令」进入。
这里我采用「adb命令」来操作。
回到命令提示符窗口,键入 adb reboot bootloader
并回车,手机会立即重启至 Bootloader 模式。
1 | ~/test/pixel |
之后,通过 fastboot devices
命令验证 fastboot 是否成功:
1 | ➜ fastboot devices |
解锁 Bootloader
上一步进入Bootloader页面后,手机界面应该是如下图:
在命令提示符窗口键入 fastboot flashing unlock
并回车,手机进入 Bootloader 解锁界面。
1 | ➜ fastboot flashing unlock |
对于 Pixel 2 XL
机型,要用如下的命令:
1 | fastboot flashing unlock_critical |
详情查看:Factory Images for Nexus and Pixel Devices | Google APIs for Android | Google Developers
在 Bootloader 解锁界面中,使用音量键 +/-
来控制光标,选择「Yes」并按下电源键来进行 Bootloader 解锁。
确认完毕后,稍作等待。通过 fastboot reboot
命令重启手机:
1 | ➜ fastboot reboot |
稍等片刻之后,你的设备会自动重启。
判断解锁成功
当手机重启时出现黑底白字的英文警告页以及屏幕下方出现一把打开的小锁,那 Bootloader 就解锁成功啦。
重启手机,出现如下两个界面就算解锁成功:
当然,还有一种更简单的方法,就是再次进入 fastboot
模式,查看:
解锁Bootloader后的两个问题
恢复初始
在解锁 Bootloader 之后,可以看到手机系统已经是完全初始化的状态了。
在进入 「关于手机」 界面后,可以发现之前开启的「开发者选项」也是默认关闭了,需要再次点击7次「版本号」开启。
那么,在执行后面的操作时是否仍需要再次将「OEM解锁」打开呢?答案是:不需要。
然而,因为后面需要用到 adb
命令去操作手机,所以「USB调试」选项还是需要打开的。
关于「OEM锁与bootloader锁的关系」,可以看下面的 疑难解答 。
错误提示
成功解锁Bootloader后,每次手机启动或重启时,都会出现黑底白字的英文警告页,提示 “Your device software can’t be checked for corruption. Please lock the bootloader”。
这没有什么可担心的,这是正常的!
这仅仅是提示你 Bootloader 被解锁了,直接忽视即可。
刷入第三方Recovery:TWRP及Root
由于Pixel及Pixel XL都采用A/B升级系统,因而可以理解为手机里有2个系统,如果你按照传统刷入Twrp的方法刷入的话,那么你并不会获得一个永久的Twrp。所以需要先刷入一个临时的Twrp,在通过临时的Twrp来刷入永久的Twrp从而来获取Root权限。
下载必要软件
需要下载临时的Twrp、永久Twrp及Magisk三个文件。
首先,前往 TWRP 官网 Devices 下载最新版 TWRP 压缩包(.zip)和临时 TWRP 镜像文件(.img)。
我的Pixel对应选择从这个页面 Download TWRP for sailfish 下载的 3.2.3-1
版本:
1 | twrp-pixel-installer-sailfish-3.2.3-1.zip (永久twrp) |
从github Releases · topjohnwu/Magisk 下载最新的 Magisk 包。 这里我下载的是 17.2
版本:
1 | Magisk-v17.2.zip |
拷贝文件到手机
假设我电脑上的操作目录为: ~/test/pixel
。
将 twrp-3.2.3-1-sailfish.img
拷贝到该目录下。
将 twrp-pixel-installer-sailfish-3.2.3-1.zip
和 Magisk-v17.2.zip
拷贝到手机中。
在将文件拷贝到手机中时,我发现通过数据线连接到电脑时,选择 传输文件
电脑中并没有出现手机存储的盘符,也就无法直接将文件拖拽到手机中。
在经过一番摆弄之后,我觉得最靠谱的还是通过 adb
的方式来上传文件。
连接手机,在手机端弹出「USB调试」点击确定,打开item2,切换到目录 ~/test/pixel
:
1 | ~/test/pixel |
查看adb连接状态:
1 | ~/test/pixel |
先通过 adb shell
命令进入手机的bash命令下,在 /sdcard
目录下创建临时文件夹 tmp
:
1 | ~/test/pixel |
通过 adb push <local> <remote>
命令将文件上传到手机的 /sdcard/tmp/
目录中:
1 | ~/test/pixel |
查看手机中文件列表:
1 | ~/test/pixel |
注:对于为什么将文件拷贝到手机的 /sdcard
目录,可以看下面的 疑难解答
刷临时Twrp
引导进入 Bootloader
执行命令 adb reboot bootloader
:
1 | ~/test/pixel |
刷入临时Twrp
执行命令 fastboot boot *.img
来启动临时Twrp:
1 | ~/test/pixel took 5s |
之后,手机会进入到临时的Twrp中:
滑动下面的 Swipe to Allow Modifications
滑条,进入Twrp操作页面:
刷入永久Twrp
选择 Install
– 找到目录 /sdcard/tmp/
– 选择 twrp*.zip
文件 – 弹出安装界面 – 直接滑动底部的滑条 Swipe to confirm Flash
安装:
这里也间接验证了为什么要选择
/sdcard
目录:点击Install
按钮后,直接进入的就是/sdcard
目录,即只能操作这个目录。
等待进度条执行完毕,最后会显示 ...done
的提示。说明这一步执行完成。
刷入Magisk
上一步安装完成后,我们发现界面中只有两个按钮:Wipe cache/dalvik
和 Reboot System
。后一项肯定不能选,如果选择重启,那还有一个 Magisk
文件没有刷入,否则的话还需要走一遍上面的 刷入临时Twrp
的操作;而第一项 清除临时缓存文件,只是我不清楚该文件具体是干什么用的,所以也怕点了之后会出问题。
这种情况下,我只好上网去查询看看是否有相关的操作介绍,可想而知,这个问题可能太简单了,很难找到相关的介绍。
正当我一脸迷蒙时,我的手误按了顶部的 “蓝色条” 部分,发现… 界面返回了 Install
页面:
我只想说,这操作简直是 666
啊!!!
经过验证,只要点击顶部的「install Zip」 蓝色条部分左侧的「图标」处,就会返回 Team Win Recovery Project
界面。
依照上面的安装步骤,继续安装 Magisk-v17.2.zip
文件。直到界面中提示 ...done
时,说明安装完成。
安装完成后,点击下面的 Reboot System
按钮,重启系统。
不过,这时候发现界面会提示询问是否安装 TWRP App
?
这里,千万不要安装。直接点击中间的 Do Not Install
即可。
待手机重启进入系统后,可以发现手机APP中多了一个 Magisk
的脸谱Logo图标。
至此,整个刷机过程就结束了。
验证是否成功Root
至于如何验证是否成功Root,最简单的方法就是安装几个需要获取Root权限的软件就可以了。
可以在「脸谱Logo」的菜单中选择「超级用户」,为相应的软件开启Root权限。
优化
去掉wifi叉号标记
在国内的网络环境下,通过wifi联网之后,Pixel的wifi图标上会默认显示一个「叉号」。虽然能够正常联网,但对于强迫症来说,还是觉得很碍眼。
对于这个问题,原理性的解释是:
谷歌原生安卓系统当连接到移动数据网络或者WIFI网络的时候,其NetworkMonitor模块会向特定的服务器发起一个http的请求并利用收到的响应进行网络状态判断。由于谷歌的服务器被GFW屏蔽,所以导致没有返回值,这个时候谷歌安卓系统就会在信号或者wifi上打一个感叹号或叉号。
可以通过换成v2ex的验证方式来解决。在命令提示符中执行:
1 | adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204 |
然后开启飞行模式,再关闭飞行模式即解决!
操作前:
执行命令:
1 | ~/test/pixel |
操作后:
如果你想恢复的话,使用下面的命令:(未亲测)
1 | adb shell settings delete global captive_portal_server |
疑难解答
fastboot oem unlock
or fastboot flashing unlock
在网上搜索到的一些教程中,有的说是使用 fastboot oem unlock
来解BL,有的说是通过 fastboot flashing unlock
来解BL。
最终在google的官网中,我找到了如下的介绍:
If necessary, unlock the device’s bootloader using one of the following methods:
If you are updating a Nexus or Pixel device that is manufactured in 2015 or later (for example, a Nexus 5X, Nexus 6P, Pixel, Pixel XL, Pixel 2 or Pixel 2 XL device), run this command:
fastboot flashing unlock
If you are updating an older device, run this command:
fastboot oem unlock
更多介绍,请看: Factory Images for Nexus and Pixel Devices | Google APIs for Android | Google Developers
OEM锁与bootloader锁的关系
OEM锁是限制了bootloader锁,OEM锁系统默认是关闭的,必须在开发者中手动打开。之后 bootloader锁才能进行解锁。
通俗一点的说,OEM锁只跟bootloader锁有关系,和之后的Root操作没有关系。所以当解锁Bootloader后系统配置被重置了,即使 「开发者选项」中的 「OEM解锁」显示为灰色不能操作,也无关紧要了。
参考:关于解锁bootloader的重要性.机友们务必细读,生死问题,请勿忽视! - Pixel | Pixel XL 论坛 - 智友论坛
解锁bootloader的好处
- 最重要是为自己的手机买了份保险,留了条生路.卡死 系统抽风或变砖后,
可在bootloader界面下线刷原厂镜像恢复系统。(不解锁的无法刷机救回) - 作为亲儿子机型,XDA上很多资源,有大量第三方ROM、优化补丁、Recoovery、ROOT
- 解锁bootloader后,不ROOT和修改系统文件,不影响在线OTA升级。
解锁后 开机Google logo下有个小锁和两秒钟的警示语说你的手机已经解了bootloader锁,
机友们可以无视之,不影响使用。
adbpush文件时权限不够
在使用命令 adb push
将文件 twrp-pixel-installer-sailfish-3.2.3-1.zip
上传到手机时,可能由于权限问题而报错:
1 | ~/test/pixel |
我们可以通过 adb shell
命令来进入到手机的bash命令下,也可以直接在后面跟上bash命令来执行。进行验证:
adb shell
:
1 | ~/test/pixel |
或者
adb shell mkdir tmp
:
1 | ~/test/pixel |
发现,果然是当前用户的权限不够。
经过验证,发现当前用户对 /sdcard
目录是有权限进行文件或目录的操作的。
1 | ~/test/pixel |
码字不易,以上操作均为本人实际操作并验证。如果该文章对您有所帮助,可以赠送一杯咖啡!!!
相关链接
工具
教程
- Pixel XL解锁BL、刷入Twrp及Root教程 | XZYMOE’S BLOG ☆
- 从 Bootloader 解锁到必备应用推荐:我的 Google Pixel 折腾手记 - 少数派
- Android ADB命令大全(通过ADB命令查看wifi密码、MAC地址、设备信息、操作文件、查看文件、日志信息、卸载、启动和安装APK等) - mingy的专栏 - CSDN博客
2019年08月27日 Update
Magisk更新
将 Magisk 从 v17.2
版本升级到 v19.3
版本。
可以从 Magisk 下载最新版本的Magisk的zip压缩包。
第一步 adb连接
要确保手机设备通过adb正确连接。如果提示为 offline
则需要重新设置手机的连接。
1 | ➜ adb devices |
直到出现 device
时,说明手机正确连接了。
1 | ➜ adb devices |
一般出现 offline
的情况可能是usb数据线的问题,或者连接设置的问题。
这里我的解决方法是:
- 断开usb设备连接
- 执行命令
adb kill-server
来停止adb服务 - 执行命令
adb start-server
来重新运行adb服务 - 重新通过usb连接手机设备
- 打开
开发者选项
,重新勾选usb调试
,在弹出的窗口选择确定
- 再次执行命令
adb devices
,发现显示device
了
第二步 拷贝Magisk文件
通过 adb push
命令将新版的Magisk文件拷贝到手机设备中:
1 | ➜ adb push Magisk-v19.3.zip /sdcard/tmp/ |
这里我之前使用的是 Magisk-v17.2.zip
版本,现在要更新到 Magisk-v19.3.zip
版本。
第三步 进入Bootloader
执行 adb reboot bootloader
进入 Bootloader
界面。
第四步 进入临时Twrp
通过 twrp*.img
文件,启动进入临时Twrp:
1 | ➜ fastboot boot twrp-3.2.3-1-sailfish.img |
第五步 安装Magisk
进入 Twrp
页面后,滑动下面的 Swipe to Allow Modifications
滑条,进入Twrp操作页面。
选择 Install
– 找到目录 /sdcard/tmp/
– 选择 Magisk-v19.3.zip
文件,滑动 Swipe to confirm Flash
来安装。
安装完成后,点击下面的 Reboot System
按钮,进入下一步。
之后,直接点击中间的 Do Not Install
等待手机重启进入系统即可。