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

5
我需要通过su获得root访问权限,以启动TcpDump二进制文件(我正在开发一种安卓嗅探器)。我使用以下代码:
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个回答

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

我成功地通过删除/system/app/SdkSetup.apk使得superuser.apk在重启后仍然存在。

我刚刚再次检查,它已经重新创建了,但是我仍然在我的重启之间保留了Superuser.apk。

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


0
请注意,a.b.d 中的步骤也适用于带有 2.3.3 姜饼系统的 AVD 模拟器。 我从提供的链接下载了 su-2.3.6.1-signed.zip。
此外,我创建了一个包含 a.b.d 提供的命令以进行即时执行的 .bat 文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接