我需要通过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。
答案 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。
我还建议推送一个busybox二进制文件和su。
答案 2 :(得分:0)
请注意,a.b.d中的步骤也适用于带有OS 2.3.3 Gingerbread的AVD模拟器。 我从提供的链接下载了su-2.3.6.1-signed.zip。
另外,我创建了一个.bat文件,其中包含a.b.d提供的用于即时执行的命令。