#android #android-emulator
#Android #android-эмулятор
Вопрос:
Мне нужно получить root-доступ через su, чтобы загрузить двоичный файл 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.txtn");
os.writeBytes("exitn");
os.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Это отлично работает на рутированном телефоне, но я хочу добиться этого в эмуляторе.
По умолчанию вы не можете получить root-права через su в эмуляторе (хотя это возможно через adb shell).
Я нашел этот пост
Но у меня это не работает. Я где-то читал, что этот совет не будет работать с текущей версией sdk, но в нем не сказано, с какой она будет работать. Я пытаюсь использовать sdk версии 10, а avd запускать Android 2.1.
Ответ №1:
Хорошо, я решаю проблему самостоятельно :/
Это работает с версией 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
Вы должны делать это при каждом запуске эмулятора.
Ответ №2:
Я смог заставить superuser.apk оставаться между перезагрузками, удалив /system/app/SdkSetup.apk
Я только что проверил еще раз, и он был воссоздан, но у меня все еще есть Superuser.apk между моими перезагрузками.
Я бы также рекомендовал использовать двоичный файл busybox вместе с su.
Ответ №3:
Обратите внимание, что шаги из a.b.d также работали для эмулятора AVD с OS 2.3.3 Gingerbread. Я скачал su-2.3.6.1-signed.zip по предоставленной ссылке.
Кроме того, я создал файл .bat, содержащий команды, предоставленные a.b.d для мгновенного выполнения.