通过Android模拟器上的su获取root访问权限

时间:2011-04-16 14:17:29

标签: 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());
    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();
}

它在root手机上完美运行,但我想在模拟器中实现这一点。 默认情况下,您无法通过模拟器上的su获取root权限(尽管可以通过adb shell获得)。

我找到了this帖子

但它对我不起作用。我读过这个提示不适用于sdk的修复版本,但它没有说明它将起作用。 我尝试使用sdk修订版10和avd运行Android 2.1。

3 个答案:

答案 0 :(得分:8)

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

它适用于sdk修订版10和avd 2.2。我之前遵循的提示问题是重新安装步骤。以下是为我工作的命令列表(摘自http://forum.xda-developers.com/showthread.php?t=821742):

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

您可以在此处获取su二进制文件和超级用户应用程序:http://forum.xda-developers.com/showthread.php?t=682828

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

答案 1 :(得分:1)

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

让superuser.apk在重新启动之间保持不变

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

我还建议推送一个busybox二进制文件和su。

答案 2 :(得分:0)

请注意,a.b.d中的步骤也适用于带有OS 2.3.3 Gingerbread的AVD模拟器。 我从提供的链接下载了su-2.3.6.1-signed.zip。

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