Ich habe alle Android SDK-Versionen (von 1.5 bis 2.3.3), und ich habe viele Methoden versucht, um root in Android-Emulator zu bekommen. Ich don't verwenden alle Android-Gerät und testen Sie alles auf Emulator (AVD).
Ich benötige Root-Zugriff in einem der Android-Emulatoren, um die 'iptables' und 'busybox' Funktionalität zu nutzen. Und um iptables zu verwenden, muss ich Root-Zugriff haben. Zumindest sollte der Befehl 'su' im Terminalemulator ausgeführt werden.
Ich habe auch die Anwendung z4root
installiert,
Aber es dauert sehr lange und nicht fertig verwurzeln, und bleibt stecken. einige sagen, dass, wenn wir das System auf unter RC30 downgraden, auf diese Weise können wir Root-Zugriff zu bekommen. wenn das wahr ist, dann wie dies zu tun? Ich benutze sowohl Linux als auch Windows OS.
Bitte sagen Sie mir eine Methode, um meinen Emulator zu rooten.
Hier ist die Liste der Befehle, die Sie ausführen müssen, während der Emulator läuft, ich teste diese Lösung für ein avd auf Android 2.2:
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
Es wird davon ausgegangen, dass sich das su-Binary im Arbeitsverzeichnis befindet. Sie können su und superuser hier finden: http://forum.xda-developers.com/showthread.php?t=682828. Sie müssen diese Befehle jedes Mal ausführen, wenn Sie den Emulator starten. Sie können ein Skript schreiben, das den Emulator startet und ihn rootet.
Für AVD mit 5.1.1 und 6.0 habe ich folgendes Skript unter Windows verwendet:
set adb=adb -s emulator-5558
set arch=x64
set pie=
adb start-server
%adb% root
%adb% remount
rem %adb% shell mount -o remount,rw /system
%adb% shell setenforce 0
%adb% install common/Superuser.apk
%adb% push %arch%/su%pie% /system/bin/su
%adb% shell chmod 0755 /system/bin/su
%adb% push %arch%/su%pie% /system/xbin/su
%adb% shell chmod 0755 /system/xbin/su
%adb% shell su --install
%adb% shell "su --daemon&"
rem %adb% shell mount -o remount,ro /system
exit /b
Benötige UPDATE.zip von SuperSU. Entpacke sie in einen beliebigen Ordner. Erstellen Sie eine Bat-Datei mit obigem Inhalt. Vergessen Sie nicht, die notwendige Architektur und das Gerät anzugeben: set adb=adb -s emulator-5558
und set arch=x64
. Wenn Sie Android über oder gleich 5.0 verwenden, ändern Sie set pie=
in set pie=.pie
. Führen Sie es aus. Sie erhalten temporäres Root für den aktuellen Lauf.
Wenn Sie eine Fehlermeldung beim Einhängen der Systempartition erhalten, müssen Sie AVD von der Kommandozeile aus starten. Siehe unten den ersten Schritt für Android 7.
Wenn Sie es dauerhaft machen wollen - aktualisieren Sie die Binärdatei in SuperSU und speichern Sie system.img aus dem temp-Ordner als Ersatz für die Standard system.img.
Wie man das resultierende temporäre Root in ein permanentes umwandelt
Zuerst geht es zu SuperSu. Es bietet ein binäres Upgrade an. Aktualisieren Sie auf die normale Weise. Neustart ablehnen.
Zweitens - nur relevant für Emulatoren. Die gleiche AVD. Die Quintessenz ist, dass Änderungen im Systemabbild nicht gespeichert werden. Sie müssen sie für sich selbst zu halten.
Es gibt bereits Anweisungen variieren für verschiedene Emulatoren.
Für AVD können Sie versuchen, eine temporäre Datei system.img zu finden, speichern Sie es irgendwo und verwenden, wenn Sie den Emulator starten.
Unter Windows befindet sie sich im Verzeichnis %LOCALAPPDATA%\Temp\AndroidEmulator
und hat einen Namen wie z.B. TMP4980.tmp
.
Sie kopieren es in einen Ordner avd device (%HOMEPATH%\.android\avd\%AVD_NAME%.avd\
) und benennen es in system.img
um.
Jetzt wird es beim Start verwendet, anstatt wie üblich. True, wenn das Image im SDK aktualisiert wird, wird es das alte haben.
In diesem Fall müssen Sie dieses system.img
entfernen und den Vorgang bei seiner Erstellung wiederholen.
Ausführlicheres Handbuch auf Russisch: http://4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931
Für android 7 müssen Sie zusätzliche Schritte ausführen:
Der Emulator muss manuell gestartet werden.
Gehen Sie zum sdk-Ordner sdk\tools\lib64\qt\lib
.
Starten Sie von diesem Ordner aus den Emulator mit den Optionen -writable-system -selinux disabled
.
Etwa so:
F:\android\sdk\tools\lib64\qt\lib>F:\android\sdk\tools\emulator.exe -avd 7.0_x86 -verbose -writable-system -selinux disabled
Sie müssen adbd
von root aus neu starten:
adb -s emulator-5554 root
Und das System neu mounten:
adb -s emulator-5554 remount
Es kann nur einmal pro Emulatorlauf durchgeführt werden. Und jeder weitere Remount kann den Schreibmodus unterbrechen. Aus diesem Grund brauchen Sie keine anderen Befehle mit remount auszuführen, wie mount -o remount,rw /system
.
Andere Schritte bleiben gleich - Binary hochladen, Binary als Daemon starten und so weiter.
Bild von AVD Android 7 x86 mit root:
Wenn Sie eine Fehlermeldung über PIE beim Ausführen der su
-Binärdatei sehen, dann haben Sie die falsche Binärdatei in den Emulator hochgeladen. Sie müssen die Binärdatei mit dem Namen su.pie
im Archiv hochladen, aber auf dem Emulator muss sie als su
bezeichnet werden, nicht als su.pie
.
Ich glaube, der einfachste Weg ist, einen Alias für den Befehl sh
zu erstellen, z.B.
adb shell
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/bin
cat sh > su && chmod 4775 su
Getestet auf Android Emulator 3.0 und höher.