Nexus 5系统升级
Nexus 5
2016年初,在Nexus 5发布2年之后,终于拿到了这款原生手机,可以追随Google Android的版本前进的脚步了。
Google服务已经被墙,以下所有操作都需要首先确保已经正确翻墙。
强制升级
开机以后,因为网络没发就绪(在公司内网需要安装802.1x认证的安全软件),所以跳过了Google注册。网络就绪以后,通过VPN翻墙连接到Goolge注册账号,完成后依然发现在Setting => About phone => System updates中显示
Your system is up to date.
Last checked for update on 1/1/1970这个问题的原因是因为Google Services Framework中的残留数据使得系统认为自己已经检查过最新的软件版本(我怀疑和最初手机没有连接网络使用ntp进行同步时钟有关,或者是对时间判断的bug,因为System updates检查的时间停留在Unix元年。
处理的方法参考How To Force Your Nexus 4 or Android Device To Update To Jelly Bean 4.2.2,下文图片采用的是该参考文档中图片,实际操作以系统为准。
- 从下拉快捷方式中点击 - settings

- 选择 - Apps菜单

- 然后选择 - ALL(需要选择所有程序进程才能找到- Google Services Framework)

- 点击 - Clear data按钮清除数据

- 清理完数据以后,再点击 - Force stop按钮停止- Google Service Framework(这样下次- System updates检查才会启动一个新的进程)

- 返回到 - Setting => About phone => System updates,从新点击一次- Check now按钮,强制再次启动版本更新检查

此时就会看到检查到Android新版本 5.0.1 ,则可以升级到 Android 5.x,再升级到后续的新版本。
有关Nexus 5升级Android 6.0.1评测,看来这款老硬件升级到最新系统还是很流畅的
通过Factory Images for Nexus Devices升级系统
Factory Images for Nexus Devices升级系统由于OTA升级方式需要翻墙,网络速度非常缓慢,并且需要先升级到5.0.1,才能再升级到6.x。整个下载过程过于缓慢,几乎无法完成。所以最后还是采用从 Factory Images for Nexus Devices 下载对应 Nexus 5 的镜像来安装。
要实现使用系统镜像来刷新设备,需要使用fastboot工具,可以从以下两种方式之一来获得:
- 从Android Open Source Project获取完整的开发版本 
- 从Android SDK的 - platform-tools/下获取该工具。确保从SDK Manager获取了最新的 Android SDK Platform-tools
参考IntelliJ IDEA 15.0 Help: Prerequisites for Android Development,由于我已经安装和使用了IntelliJ IDEA,所以只需要下载
SDK Tools
使用sdk-manager
sdk-manager从Download Android Studio and SDK Tools下载最新版本的独立的SDK Tools。
我使用的是Mac OS X,所以下载的android-sdk_r24.4.1-macosx.zip解压缩以后目录是android-sdk-macosx,将这个目录存放到~/下(选择自己的HOME目录是为了方便普通用户身份访问)。
在Intellij中创建一个新项目,选择Android

点击Next,在下一步设置Android SDK Location时填写前面下载的SDK Tools目录,例如这里/Users/huatai/android-sdk-macosx

在下一步选择Launch SDK Manager

在SDK Manager中,默认选择安装SDK 6,使用默认安装的软件包就可以开发Android 6的应用软件了,其中也包含了Android SDK Platform-tools

上述安装过程即满足了刷新Android Image需求,同时也是准备Android开发环境的过程
如果使用Mac(如我)在 ~/.bash_profile 配置中添加
if [ -d "<path-to-sdk>/platform-tools" ] ; then
  export PATH="<path-to-sdk>/platform-tools:$PATH"
fi注意:
<path-to-sdk>要换成实际的SDK目录。对于Window/Linux用户,请参考 Installing adb & fastboot
然后执行. ~/.bash_profile或退出重新登录使环境生效
此时,执行
adb devices应该看到连接在USB上的Nexus设备。如果没有看到连接设备,则参考下一步激活USB Debugging步骤
激活Nexus设备的USB debugging模式
USB debugging模式执行adb devices时候可能遇到报错error: no devices found
很多在Windows平台刷机的建议都是重新安装驱动(How to fix: Error device not found with ADB.exe)或者尝试升级Windows驱动/将
USB Computer connection更改成Camera (PTP)模式(ADB No Devices Found)
尝试重新adb服务
ps aux | grep adb | grep -v grep可以看到如下adb服务
huatai          48149   1.3  0.0  2475576   3872 s003  S    12:54AM   1:22.39 adb -P 5037 fork-server server --reply-fd 4停止服务
adb kill-server再次启动服务
adb start-server不过,实际的原因是 需要在Nexus设备先激活开发者模式(developer options),然后再启用USB debugging或Android Debug Bridge(
- 激活开发者模式方式方法如下: - 在 - Settings中,选择- About phone
- 连续点击 - Build number项- 7次,此时会有一个提示- You are now a developer.
- 返回 - Settings,此时就多了一个- Developer options
 
- 在 - Developer options点击选择- USB debugging激活Debug模式,此时会提示具有风险(可以直接通过USB安装软件),确认激活
此时,在此使用adb devices命令检查设备,可以看到
List of devices attached
02211e9ec9623837    device使用adb更新设备系统
adb更新设备系统- 将设备通过USB连接到主机 
- 使用以下方式之一将设备启动到 - fastboot模式- 使用 - adb tool在设备启动的状态下执行如下命令- adb reboot bootloader
- 使用设备组合键:关闭设备电源,在启动设备时迅速按下相关键。例如,对于Nexus 5设备,启动时同时按下 - 音量的上下键和- 电源键
 
使用adb reboot bootloader命令之后,Nexus设备会显示一个躺着打开前胸面板的Android机器人,并且提示
FASTBOOT MODE
...
SECURE ROOT - enabled
LOCK STATE - locked上述界面表示正处于锁定状态,则执行下一步 "通过以下命令将设备的bootloader解锁"
- 通过以下命令将设备的 - bootloader解锁- fastboot oem unlock
解锁bootloader对于开发者和玩家很有用,可以直接访问设备的个人数据定制个人ROM,详细步骤参考How to unlock Nexus 5 bootloader: the first step for modding
这时设备会提示确认屏幕(unlock以后,可以安装定制的操作系统) 注意,确认后设备上的所有数据被清除
使用音量键将高亮确认键移动到Yes上,然后按下电源键确认执行unlock
此时设备屏幕上显示LOCK STATE - unlocked一行小红字,表示解锁成功,现在就是解锁状态的FASTBOOT MODE了。可以开始刷入新系统了。
- 打开一个终端窗口,进入到已经解压缩镜像的目录 
- 执行 - flash-all脚本,这个脚本将安装必要的- bootloader,- baseband firmware(s)和操作系统- ./flash-all.sh 
刷机时间约2分钟
- 重启设备 
- 设备重启后,处于安全原因,可以重新锁定 - bootloader- fastboot oem lock
启动无法通过Checking connection...
Checking connection...刷机后启动,在首次启动时,需要连接Google服务进行注册。但是由于在景德镇,Checking connection...页面会一直卡住无法跳过。参考Can't get past Lollipop Tap & Go setup screen
From Lollipop, Google wants user has a working net connection to boot up. 
Prob 1, Your wifi has an active firewall to prevent accessing google servers.
Prob 2, You don't have a sim card or data plan.解决的方法是:插入一张SIM卡,即使这张SIM卡无法使用(例如,我发现电信的4G卡无法使用,扫描不到2G/3G/4G网络),只要Nexus识别到有SIM卡,就会允许跳过WIFI方式连接Google服务,这样也就避免了最初设备初始化时候尴尬的页面。
参考
Last updated
Was this helpful?