通过Android emulator上的su获得根访问权限

通过Android emulator上的su获得根访问权限,android,android-emulator,Android,Android Emulator,我需要通过su获得root访问权,以使用TcpDump二进制文件(我正在开发一种android嗅探器)。我使用以下代码: try { Process process = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(process.getOutputStream()); os = new DataOutputStream(process.getOutputStream

我需要通过su获得root访问权,以使用TcpDump二进制文件(我正在开发一种android嗅探器)。我使用以下代码:

try {
    Process process = Runtime.getRuntime().exec("su");
    DataOutputStream os = new DataOutputStream(process.getOutputStream());
    os = new DataOutputStream(process.getOutputStream());
    os.writeBytes("/data/local/tcpdump-arm -c 10 -s 0 -w /data/local/out.txt\n");
    os.writeBytes("exit\n");
    os.flush();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
它在根手机上工作得非常好,但我想在模拟器中实现这一点。 默认情况下,您无法通过模拟器上的su获得root权限(尽管可以通过adb shell获得)

我找到了一个职位

但这对我不起作用。我在某个地方读到了这个技巧在sdk的当前版本中不起作用,但它没有说明它将在哪个版本中起作用。
我尝试使用sdk修订版10和运行Android 2.1的avd。

好的,我自己解决了这个问题:/

它适用于sdk版本10和AVD2.2。我之前遵循的技巧的问题是重新安装步骤。以下是适用于我的命令列表(摘自):

您可以在此处获取su二进制文件和超级用户应用程序:


每次启动模拟器时都必须这样做。

我通过删除
/system/app/SdkSetup.apk

我刚刚再次检查并重新创建了它,但在重新启动之间仍然有Superuser.apk


我还建议将busybox二进制文件与su一起推送。

注意,a.b.d中的步骤也适用于带OS 2.3.3姜饼的AVD emulator。 我从提供的链接下载了su-2.3.6.1-signed.zip

此外,我还创建了一个.bat文件,其中包含a.b.d提供的用于即时执行的命令

adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
adb push su /system/xbin/su
adb shell chmod 06755 /system
adb shell chmod 06755 /system/xbin/su
adb install superuser.apk