今天使用完美刷机工具,将一台Google Nexus 7(Asus ME370T一代)由Android 4.2.1升级至Android 5.1.1。升级的过程非常顺利,但是在开机后发现问题来了,无法跳过Android的开机向导。这个向导一定要连接到谷歌的服务器(http://clients3.google.com/generate_204页面)。因为在国内的环境下,无法连接至谷歌服务器,甚至使用影梭(shadowsocks)作为代理,也未能成功设置谷歌,因此卡在设置界面无法继续。此时上网查了各位前辈们使用的方法,不论是拔卡法,还是四角点击法,都证明是无效的。最后在XDA Develop的网站,看到了一篇如何跳过开机Wifi的方法 (http://forum.xda-developers.com/showthread.php?t=1909602, ;How to skip WiFi configuration during initial setup of Nexus 7),其中提到了使用fastboot工具,对system.img中的build.prop进行修改,将开机设置向导默认为关闭,这样就可以跳过网络设置需求。从这个方法来看,值得一试。
下图中的三个固件分别对应于该机型的4.2.1,4.4.4以及5.1.1版本的Android。我升级时使用的5.1.1版。

首先将该固件压缩包全面展开到一个叫做N7511的目录中,列表如下:
其中android-info.txt, recovery.img, system.img, userdata.img 等4个文件是从image-nakasi-lmy47v.zip中再次展开的。因为从前面的文章中已经获知build.prop是放在system.img中,因此直接使用UltraEdit工具,采用二进制方式打开system.img,然后在其中查找字符串(ASCII字符串)"ro.setupwizard" ,找到后在对该部分做修改。
在system.img的0x0c9ba560处,看到了ro.setupwizard.enterprise_mode=1,使用ASCII修改,将=1修改为=0。这样就就为了避免在开机时使用开机向导的企业模式(enterprise_mode,这个参数和开始需要查找的setupwizard.mode不对应)。为了稳妥起见,这次仅修改了这一个字节,然后保存,准备写入Nexus 7中。
在命令行方式下,进入完美刷机软件的安装目录下的tools目录,里面有基本的fastboot工具和adb工具等。使用fastboot命令行,先擦除system分区,然后再次将修改后的system分区映像写入,最后发送重启Reboot命令,重启Nexus 7。

但本次修改并未获得成功,开机后依然出现提示连接wifi的需求无法跳过。因此再次回来,对system.img进行再次修改,以便直接获取root缺陷,修改usb连接等。
使用UltraEdit打开System.img,再次搜索ro.setupwizard,发现除了ro.setupwizard.enterprise_mode属性外,还有一个 ro.setupwizard.network_required=true,这个写明了需要网络连接。因此需要将该属性修改为false。但是因为true和false的长度不同,需要修改为false时,就需要增加1个字节的存储空间才行。因此将其上一行的camera.flash_off=0参数进行屏蔽(该机型没有闪光灯,不在乎闪光灯的开关是否关闭)。将Camera 修改为#amera,最后的=0修改为换行符。然后将ro.setupwizard.network_required=true修改为=false。

再次保存,并烧录在Nexus7中,重启机器后,终于在开机的网络设置界面看到”SKIP“由灰色变成黑色,可以选择跳过,进行正常启动。
至此,对于该机型的升级破解已完成。利用完美刷机工具,可以非常方便进行Root,以便做其它操作。
|