root Android 模拟器

参考文档:http://blog.csdn.net/xbalien29/article/details/22661479

本文以2.3.3版本系统为目标。

一 准备工作

首先我们需要准备3样工具:su , superuser.apk, busybox , mkfs.yaffs2.arm。这三个工具可以在:下载。

二 开始root

1 由于我们需要将su和busybox,push到/system/文件目录下,而此文件默认是以Read_Only模式挂载的,所以我们首先需要将该文件的挂载模式该为可读可写模式:

abd shell mount -o remount,rw /dev/block/mtdblock0 /system 

2 push文件到合适目录

使用如下命令:

adb push su /system/bin

adb shell chmod 6755 /system/bin/su   #一定是6755,这里使用了suid的特性!

adb push busybox /system/xbin

adb shell chmod 755 /system/xbin/busybox

可能会出现的问题:

  1、在执行adb push su /system/bin的时候可能会报错: out of memery。出现这个问题原因很多,如使用eclipse启动模拟器等。

  解决方法:首先去~/.android/avd/yourEmulatorName.avd  中查看hardware-qemu.ini文件中的配置条目:

  disk.systemPartition.size = 238m  (大小根据自己实际情况不定,这表示系统启动后原本/system目录的整体大小),由于我们要向该目录中写入文件,

  所以我们必须将这个值扩大,所以需要使用如下命令启动模拟器:

  emulator -avd yourAvdName -partition-size 300     //这表示启动后的模拟器的/system目录占300M ,这样就不会报错了。  

3 安装superuser.apk

4 检验

现在我们就可以在adb shell中 使用busybox + CMD来使用busybox提供的命令了

三 保存root状态

要想保存模拟器的root状态,我们需要替换该模拟器的system.img文件。这个文件在sdk/system-image/android-*/arm/目录下。

1 生成当前模拟器的镜像文件

这里,我们在/data目录下新建文件夹filename:

adb shell mkdir /data/filename

然后push文件:

adb push mkfs.yaffs2.arm  /data/filename

改变执行权限:

adb shell chmod 777 /data/filename/mkfs.yaffs2.arm

执行:

./mkfs.yaffs2.arm /system   /data/filename/my_system.img

等待执行完毕,会提示build ok.

最后把它提取出来

adb pull  /data/filename/my_system.img (需要等一会)

2 替换镜像文件

进入sdk/system-image/android-*/arm/目录,使用my_system.img替换原来的system.img

至此完美收工!!

原文地址:https://www.cnblogs.com/wanyuanchun/p/3977117.html