本文转载自:http://quantoubao.blog.163.com/blog/static/2083211702013870501987/
安装Android SDK安卓模拟器的方法很简单,网上大把,傻瓜式的。不过对其root的方法,网上的版本就不那么好使了。网上的方法从方向性来说是没错的,就是细节没给讲清楚,或者讲错,或者没提到这样root方式对高低不同版本API的区别,导致不少人跟着所谓教程去做都root失败。
我这里以Android4.0.4(API15)为蓝本讲讲适合高版API的Android SDK虚拟机的root方法,很简单的。
没有root之前是这样的,帧缓冲无内容。
Root的第一步,准备工具。就两个文件。①上网搜一个叫做《YAFFS2IMG》的镜像浏览器,暂时建议用1.5版,2.0版我下载几款(当然不是Z版)似乎都有问题。②上这个网址,就是Superuser设计者的网站androidsu.com,下载对应自己模拟器版本的超级授权用户文件(该页面下方有其压缩包)。所谓对应版本,一方面是对应模拟器模拟的CPU版本,是ARM的还是x86的,不能选错。如果你模拟时选了MIP的CPU,那就死了root这条心吧。目前互联网上铺天盖地的教程都没讲清楚这点,还在文中引用第三方下载点的文件,是导致新手操作失败的罪魁祸首!另一方面就是选适合自己模拟器模拟系统的版本,以目前androidsu.com提供的最新正式版破解文件来看,适合Android2.0-4.1的。对于更旧版的(好像没什么root的意义了)可找它的历史版本;对于更新版的可以考虑它的测试版或再等一段时间。下载的话,只要下那个Superuser包即可,已经含有齐全的文件。
Root的第二步,用《YAFFS2IMG》将虚拟机子目录“system-images”内对应目标模拟器使用的系统镜像目录(我这里是“android-15\armeabi-v7a”)内的“system.img”打开。将其根目录下的“build.prop”文件提取到硬盘,用文本编辑工具(如记事本)打开,将其“ro.config.nocheckin=yes”一行删掉。当然,行头加“#”号注释掉也可以,似乎多余。再把改完的“build.prop”导入回镜像中的原来位置替换原文件。记住,把文件权限设为“0644”。必须记住,这里只能是“0644”,别依据其它教程讲的其它权限!
Root的第三步,把第一步下载的Superuser压缩包解开,把里头的一个叫做“su”(无扩展名)的文件导入第二步打开的镜像“bin”目录里,把权限设为“6755”。再把这个“su”导到“xbin”目录中,如果遇到已存在旧文件,直接覆盖,且把权限设为“0755”。记住,前一个是“6755”,后一个是“0755”。别弄错了!网上害人的教程,要么把权限说错(可能它设的权限适合旧旧旧版本的SDK模拟器),要么讲漏了“xbin”这个目录!然后把解压缩包中的“Superuser.apk”导入到镜像的“app”目录中,设权限为“0644”,也不能错!
Root的最后一步,把修改的镜像保存,选择“无ECC/没有FFFF标志”这组参数组合。
得了,这就是Root后的景况。一劳永逸。
上面提到的文件修改别指望在虚拟机中完成,一重启虚拟机就没了。就算用了快照,对其它引用同镜像的AVD也无效。还是这样改镜像最妥当,改一下就全部同镜像的AVD都生效。本方法对安卓 SDK模拟的4.0/4.1可用,至于4.2/4.3,等有新版su再试吧。
请看后续文段《Android SDK模拟器Root方法进阶》
准备工夫除了前文提到通用的《YAFFS2IMG》浏览器外,就是每个权限管理工具的apk文件与对应的su文件。
通用的处理手法就是(实机同样Root方法,实机系统用RE工具或连电脑跑adb命令,虚拟机系统用YAFFS2IMG):
⑴参照我旧文第2步。
⑵将apk文件主文件名改为其原始完整包名,可用幸运破解器看对应包的“Package name”。
⑶将改名后的apk文件塞到目标系统的“system\app”里,权限取0644。
⑷将apk文件用解压缩工具解包,看里头有没有lib目录,有的话,将里头对应cpu目录(armeabi或x86或mip)里的所有文件塞到目标系统的“system\lib”里,权限全取0644。
⑸把su文件放相应位置,并修改权限。根据不同的Root工具,这有几样情况——
①只放“system\bin”,权限是0755,“system\xbin”不得有su。
②只放“system\bin”,权限是6755,“system\xbin”不得有su。
③只放“system\xbin”,权限是0755,“system\bin”不得有su。
④只放“system\xbin”,权限是6755,“system\bin”不得有su。
⑤既放“system\bin”,权限是0755;又放“system\xbin”,权限是0755。
⑥既放“system\bin”,权限是6755;又放“system\xbin”,权限是0755。
⑦既放“system\bin”,权限是0755;又放“system\xbin”,权限是6755。
⑧既放“system\bin”,权限是6755;又放“system\xbin”,权限是6755。
例如,对于androidsu.com的方案,要采用情况⑥;对于eu.chainfire.supersu的方案,必须采用情况④。其它Root方案类似。上面讲的不得有su的状态是指虚拟机,因为虚拟机是写镜像,与系统虚拟操作无关,而实机会在重启时自动处理掉这多余的su。
⑹重启目标系统验收成果。
附上IntelX86的su文件:Superuser-3.1.3-x86-signed.zip
附上yaffs2img浏览器:yaffs2img浏览器