Android – Obtain root access via su on the Android emulator

androidandroid-emulator

I need to get root access via su to lunch a TcpDump binary (I am working on a sort of android sniffer). I use this code :

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

It works perfectly on a rooted phone, but I want to achieve this in the emulator.
By default you can't get root privileges via su on the emulator (although it's possible via adb shell).

I have found this post

But it doesn't work for me. I read somewhere this tip wont work with the curent revision of the sdk, but it doesn't say with which it will work.
I try with sdk revision 10 and the avd run Android 2.1.

Best Answer

Ok, I solve the problem by myself :/

It works with sdk revision 10 and in an avd 2.2. The problem with the tip I have followed previously is the remount step. Here is the list of commands working for me (extract from 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

You can get the su binary and the superuser app here : http://forum.xda-developers.com/showthread.php?t=682828

You have to do that each time you start the emulator.