Root Android(Nexus 5)
Last updated
Was this helpful?
Last updated
Was this helpful?
对于Android开发,是不需要Root Android就可以进行,只需要开启"Developr options"就可以了。Root Android的目的是为了增加可玩性,例如在Android上
Root Android和苹果设备的Jailbreak不是一个概念
文档提供了各种Android设备的Root方法的索引,其中介绍如何root Nexus 5设备。
如果是Windows操作系统,,可以非常方便实现快速的Root。不过,对于Mac/Linux用户,可以参考,其实就是通过虚拟机来运行Windows系统,再运行这个Root Toolkit。
上述的root android依赖特定工具,实际上隐藏了技术细节。如果是Mac/Linux系统,可以通过手工方法,使用ADB来传输root镜像实现root Android目的。
通过root android,可以在系统级别调优,甚至可以完全替换操作系统。此外,通过root Android,将获得在Linux内核上运行桌面OS的权限,也就是可以修改系统或者安装unapproved组件。当获得root访问权限之后,可以对设备进行完整的备份和恢复,意味着可以将系统完整复制到新的手机或者平板中。同时也具有了安装自定义ROM,如或者(一种定制ROM用于扩展和增强Android)。
root过程要根据不同的设备来调整,但是,第一个步骤都是相同的,即unlock,也就是绕过bootloader。bootloader是设备启动时第一个运行的程序,它会验证所有运行在手机上的软件。所以要安装root软件包,需要首先屏蔽bootloader。
注意:请先备份数据,unblock bootloaders将擦除设备上的内容!
下载和安装并安装USB驱动包和Android tools
请参考 中相关步骤完成上述安装过程
使用Android Debug Bridge (ADB)
将设备通过USB连接到主机
需要看到设备清单
使用adb tool
在设备启动的状态下执行如下命令
通过以下命令将设备的bootloader
解锁
这时设备会提示确认屏幕(unlock以后,可以安装定制的操作系统) 注意,确认后设备上的所有用户
数据被清除 ,此时系统会回到出厂状态(相当于新的手机)。
使用音量键
将高亮确认键移动到Yes
上,然后按下电源键
确认执行unlock
此时设备屏幕上显示LOCK STATE - unlocked
一行小红字
,表示解锁成功,现在就是解锁状态的FASTBOOT MODE
了。可以开始刷入新系统了。
从Google Play Store安装的免费版本有内购(主要是用于去除广告),但功能不受影响,所以可以直接安装使用。
SuperSU是在rooted之后才能安装使用,实际进行root的是TWRP或ClockWorkMod。
我的实际操作如下:
断开手机和主机连接,然后使用音量键滚动选择Recovery mode
(从Start
=> Restart bootloader
=> Recovery mode
),然后按下电源键确认进入Recovery模式。此时手机会再次启动,启动后就会看到TWRP
界面
TWRP
会提示允许是否允许修改分区
此时滑动最下方的Swipe to Allow Modifications
,进入安装TWRP更改页面,并点击Install
按钮
滚动页面,选择前面传输到手机设备中的supersu.zip
文件(具体文件名根据下载版本会不同),然后点击Install Image
按钮
在确认页面滑动Swipe to confirm Flash
按钮,确认进行刷新
刷新成功后,就可以点击Reboot System
重启系统
注意:一定要在
fastboot flash recovery twrp.img
后马上启动到Recovery模式,立即安装SuperSU.zip
。因为很多设备第一次启动时会自动替换掉定制的recovery(TWRP
),就会导致前面的步骤白做了。一旦TWRP启动,TWRP就会对ROM进行补丁来避免ROM替换掉TWRP。如果你忘记了这个步骤,需要重复前面所述的安装步骤,再重头来一次。今后再安装升级,可以下载最新的TWRP image存放到手机,然后再次进入Recovery模式,使用原先安装的TWRP进行
Install
就可以升级到最新版本的TWRP。
验证Root是否成功
看到以下验证界面就表示Root设备成功了
root过之后的Android运行和使用没有任何问题,但是会遇到一个问题,就是当Google推送系统升级的时候,每次系统启动开始打补丁总是不成功,进入Android系统之后,依然看到系统提示你要更新软件包。
在TWRP
启动时候,注意观察,可以看到启动报错是在安装/cache/update.zip
包时候返回了一个Status 7
错误:
截图如下:
上述Status 7
错误的原因是因为更新软件包中的updater-script
脚本中有一部分是检查设备型号是否和安装的ROM兼容,这部分的updater-script
有一个称为asserts
的部分是用来校验的。
将 update.zip
文件复制出来(对于系统目录下文件复制,需要su权限,见下文)解压缩
当使用了su
指令之后,就可以进入root
帐号,此时就可以cd /cache
等系统目录。不过,无法使用adb root
指令(这个指令可以以root身份运行adbd,就可以直接adb pull
系统文件),如果直接使用adb root
指令会提示正式产品设备无法使用该指令
然后在主机操作系统执行adb
命令复制出文件
解压缩以后,进入META-INF/com/google/android
目录,将updater-script
复制成updater-script.txt
,然后使用文本编辑器编辑这个文件
删除assert
开头的所有行(也就是对文件进行校验的命令),然后保存文件
再将updater-script.txt
重命名会updater-script
重新将文件压缩成原先的update.zip
,并传输回
上述方法对于OTA方式升级新的Android系统或者补丁包都是适用的
不过,我依然遇到ERROR 7报错,仔细检查报错,发现是因为fingerprint
错误
添加上 google/omni_hammerhead/hammerhead:5.0.2/LRX22G/3:eng/test-keys
(因为root的时候使用了omni_hammerhead的)或者索性删除掉这行getprop
检查即可以绕过报错。
修改上述代码行:
去除/system/recovery-from-boot.p
校验
这个报错解决方法是删除updater-script
中以下检查行
去除EMMC
校验
这个报错解决方法是删除updater-script
中以下检查行
上述对
root后Android升级
做了探索,反复折腾了多次,总算完成了root后第一次补丁包安装。本段落再做一次整理总结
root过的Android系统会对Android做如下改动
启动分区修改(也就是/system/recovery-from-boot.p
)
EMMC修改
ro.build.fingerprint
修改
部分系统软件包的替换(目前我不确定是哪些被修改了,要看实际SHA校验)
在Nexus 5 Android操作系统中检查系统更新,此时系统提示下载补丁包完成后,不要直接进行升级。而是连接USB数据线,使用adb
进行操作。
连接USB数据线后,执行如下adb
命令(其中su
命令是为了获得Android系统的root
权限,以便从系统目录中复制出补丁包)
此时补丁包被复制到存储卡目录下,就可以通过adb
命令复制出来进行修改了。
使用adb
工具将Nexus 5中已经下载的update.zip
复制出来
解压缩update.zip
此时补丁包update.zip
被复制到当前目录,使用zip
命令进行解压缩
解压缩以后,当前目录下会有两个子目录META-INF
和patch
META-INF/com/android/updater-script
脚本删除所有assert
开头的所有行(也就是对文件进行校验的命令)
删除EMMC
校验
删除/system/recovery-from-boot.p
校验
修改或删除fingerprint
校验(这里可以根据第一次补丁包安装时提示错误来修改,或者索性删除)
重新打包
通过adb
将修改过的update.zip
传回手机
启动Android进入recovery
模式(同时安装上下音量键和电源键开机,并选择recovery模式)
通过TWRP
的Install
功能安装自己修改过的/sdcard/Download/update.zip
安装过程如果有报错,请仔细查看报错信息,一般是校验错误,只要相应修改updater-script
脚本绕过就可以了
使用TWRP
的Install
功能安装补丁包有一个好处,就是安装失败可以立即修改update.zip
,再用adb
将调整后的update.zip
传入手机再次尝试升级。多试几次,就会成功!
这个问题比较麻烦,每次需要手工hack升级脚本不是解决的好方法
上述步骤我在时候已经全部做过了,所以当前操作都跳过这些。如果你是第一次操作,则需要完成上述步骤。
在电脑上下载 或者 (需要根据不同设备进行下载)以及软件包(可以从xda developers论坛SuperSU板块找到最新版本)。
也可以从Google Play Store安装,使用Google Play Store上的TWRP Manager比较傻瓜化,并且可以根据TWRP官方网站版本更新而不断根新版本,推荐使用。
也可以从Google Play Store安装 (版本似乎旧一些)
也可以从Google Play Store安装
从 看,推荐使用TWRP。,并且持续活跃开发。通过TWRP,可以安装完全定制的ROM,如,这是一个非常有意思的开源项目。
下载 ,然后通过ADB将文件传输到手机设备中
从 下载对应于设备的文件,例如,我使用的,请参考其中文档下载,然后使用如下方法刷入手机
在Google Play Store中安装应用程序,执行这个程序来检查。该程序不会对系统做任何修改,只是验证获取Root权限是否能够成功,所以是一个安全的程序。
解决的方法参考 ,可以将系统文件复制到普通目录,如/sdcard/Download
目录,然后就可以下载或上传。
Nexus 5启动进入recovery
模式的方法是在启动时同时按下上下两个音量键再按下电源键启动,保持这3个键按下状态,直到系统启动,就会进入页面,此时就可以通过音量键选择recovery
模式()
adb
使用方法参考
通过Google Play Store安装了,将TWRP升级到3.0.2.0之后,安装Android 6.0.1的补丁包update.zip
遇到的报错类似前述,报错信息略有改变
- 介绍通过快速完成
- 介绍了手工操作完成root Android方法,适用所有Android设备,推荐阅读