webentwicklung-frage-antwort-db.com.de

Wie bekomme ich Root-Zugriff auf Android-Emulator? 

Ich habe alle Android SDK-Versionen (von 1.5 bis 2.3.3) und ich habe viele Methoden ausprobiert, um im Android-Emulator root zu werden. Ich verwende kein Android-Gerät und teste alles auf dem Emulator (AVD).

Ich muss Root-Zugriff in einem der Android-Emulatoren haben, um die Funktionen "iptables" und "busybox" nutzen zu können. Und um iptables verwenden zu können, muss ich root-Zugriff haben. Der Befehl 'su' sollte im Terminal-Emulator ausgeführt werden. 

Ich habe auch z4root Anwendung installiert, 

Es dauert jedoch sehr lange und ist nicht vollständig verwurzelt und bleibt hängen. Einige sagen, wenn wir das System auf unter RC30 herabstufen, erhalten wir auf diese Weise Root-Zugriff. Wenn dies wahr ist, wie dann? Ich verwende sowohl Linux als auch Windows.

Bitte sagen Sie mir eine Methode, um meinen Emulator zu rooten.

99
Preetam

Diese Antworten sind alle unnötig kompliziert :)

$ > adb Shell
generic_x86:/ $
generic_x86:/ $ exit
$ > adb root
restarting adbd as root
$ > adb Shell
generic_x86:/ #
88
JRaymond

Wie root ich den Android-Emulator (getestet auf Android 7.1.1/Nougat)

Bedarf:

Anweisungen

  1. Installiere die SuperSu.apk 

    • Installieren Sie zuerst die SuperSu-App. Ziehen Sie einfach Drag & Drop (wenn Sie die neueste Emulator-Version ausführen oder durch Adb, dh adb -e install supersu.apk, Sideload).

    • Nach der Installation wird beim Ausführen ein Bildschirm wie folgt angezeigt: "Es ist keine SU-Binärdatei installiert ..". Dieser Fehler bestätigt lediglich, dass das Gerät noch nicht gerootet ist.

enter image description here


  1. Systempartition des Emulators beschreibbar machen

    • Demnach müssen wir dem Emulator die Erlaubnis geben, Systemdateien zu schreiben.

    • Geben Sie den folgenden Code ein, um dies auszuführen: emulator.exe -avd {emulator_name} -writable-system

Hinweis: Navigieren Sie zum Ordner tools, in dem Android SDK installiert ist, und öffnen Sie den Befehl Eingabeaufforderung, indem Sie die Umschalttaste drücken und mit der rechten Maustaste klicken.


  1. Push bin su im Systemverzeichnis

    • Extrahieren Sie die Wiederherstellungsflashable.Zip (mit den Binärdateien verschiedener Architekturen).

Wichtig! Verwenden Sie nur die su-Binärdatei, die Ihrer avd-Architektur entspricht, z. B. x86, arm usw., und notieren Sie den Pfad, in den Sie diese Binärdateien extrahiert haben.

  • Stellen Sie sicher, dass Sie adb als root ausführen und dass Sie erneut mounten müssen . Geben Sie einfach diese Codes ein

adb root

adb remount

Nun ist es Zeit, die su-Binärdatei zu drücken:

Dies ist der Code, den ich erfolgreich verwendet habe: adb -e Push C:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su 

(vergiss nie meine spezifische Position von su binary, jede Position ist in Ordnung, solange kein Leerzeichen vorhanden ist)

note: Um bin oder xbin herauszufinden, machen Sie das in der Konsole vorher:> adb Shell,> ls /system/xbin/su

Wenn dies fehlschlägt, versuchen Sie es stattdessen mit /system/xbin/su. Verwenden Sie auch für Emulatoren mit Android 5.1 und darunter die Variable su und nicht su.pie.


  1. Berechtigungen der su binary ändern

    • Als Nächstes wollen wir die Berechtigungen von su binary etwas ändern. Wir müssen dies in einem Emulator über adb tun:

    adb -e Shell su root cd /system/bin chmod 06755 su

Wichtig !! Beachten Sie den su-binären Pfad (meins ist/system/bin).


  1. Die install-Direktive auf su binary setzen und eine daemon setzen

Geben Sie die Codes ein:

su --install

und für die Einrichtung des Daemons:

su --daemon&

Wichtig !! Abstand beachten


  1. SELinux auf Permissive setzen (d. H. SE Linux ausschalten)

    • Deaktivieren Sie schließlich Selinux durch diesen Code:

setenforce 0


  1. Öffnen Sie die SuperSU-App. Möglicherweise werden Sie dazu aufgefordert, die Binärdateien zu aktualisieren. Sie können die Methode Normal verwenden.

Hinweis: Wenn Bootloops auftreten, aktualisieren Sie die Binärdateien nicht, sondern verwenden Sie sie so, wie sie sind.


Das wars so ziemlich!!

Öffnen Sie eine Anwendung, für die SU-Berechtigungen erforderlich sind, und überprüfen Sie sie, und SuperSU fragt Sie, ob Sie ihm su Berechtigungen erteilen möchten.

enter image description here

Um das root persist-Update su binary zu erhalten (mit der Methode Normal), kopieren Sie system.img aus dem temporären Verzeichnis (Users\AppData\Local\Temp\Android Emulator die Datei wird in der Regel nach dem Zufallsprinzip benannt, z. B. 1359g.tmp mit großer Größe) und ersetzen den Standard system.img.

Update:

Ich habe festgestellt, dass es unter Linux einfacher ist, ein temporäres Systemabbild als Windows zu erhalten. Sie können es mit einem Schnappschuss-Bild versuchen.

Update vom 4. August 2018

Mit dem Aufkommen des Emulators 27.3.x wird die Beibehaltung von root durch die Momentaufnahmefunktion jetzt wesentlich einfacher (wenn das Kopieren der system.img-Methode nicht funktioniert):

Idealerweise hibernarig das virtuelle Gerät mit der intakten Konfiguration, daher bleibt alles erhalten. 

Schnappschüsse

Sie können jetzt mehrere AVD-Schnappschüsse für ein bestimmtes Gerät speichern Konfiguration und wählen Sie aus, welche der gespeicherten Momentaufnahmen geladen werden sollen, wenn Sie Starten Sie den Emulator. Das Starten eines virtuellen Geräts durch Laden eines Snapshots lautet Ähnlich wie das Aufwachen eines Körpers aus einem Schlafzustand im Gegensatz zum Booten es aus einem ausgeschalteten Zustand.

Dies bedeutet, dass die einzige Anforderung zum Starten des Emulators das Hinzufügen des -writable-system-Parameters zum normalen emulator -avd [avdname]-Befehl zum Starten des Emulators ist. (Wenn Sie den Emulator nur mit emulator -avd [avdname] ausführen, wird die gerootete Version/Kopie nicht gestartet oder führt möglicherweise zu einem Fehler.)

Getestet auf API Level 22

Weitere Informationen zum Thema Bootloop finden Sie im anderen Beitrag: Android Emulator: Wie vermeide ich die Boot-Schleife nach dem Rooten? Und Updates davon.

Bemerkungen

Der meiste Inhalt war für ältere Android-Versionen und daher der Grund für die verschiedenen Befehle und Pfade, die ich geändert habe. 

Danksagungen;

58
xavier_fakerat

Hier ist die Liste der Befehle, die Sie ausführen müssen, während der Emulator ausgeführt wird. Ich teste diese Lösung für 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 die su-Binärdatei im Arbeitsverzeichnis befindet. Sie finden su und Superuser hier: 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.

33
a.b.d

Für AVD mit 5.1.1 und 6.0 habe ich das nächste Skript in 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ötigen Sie UPDATE.Zip von SuperSU. Entpackte sie in einen beliebigen Ordner. Erstellen Sie eine Bat-Datei mit dem obigen Inhalt. Vergessen Sie nicht, die erforderliche Architektur und das Gerät anzugeben: set adb=adb -s emulator-5558 und set Arch=x64. Wenn Sie Android über 5.0 oder höher ausführen, ändern Sie set pie= in set pie=.pie. Starte es. Sie erhalten ein temporäres Stammverzeichnis für den aktuellen Lauf.

Wenn bei der Remount-Systempartition ein Fehler aufgetreten ist, müssen Sie AVD von der Befehlszeile aus starten. Siehe den ersten Schritt für Android 7.

Wenn Sie es dauerhaft machen möchten, aktualisieren Sie die Binärdatei in SuperSU und speichern Sie system.img aus dem temporären Ordner als Ersatz für die standardmäßige system.img.

So konvertieren Sie das resultierende temporäre Stammverzeichnis auf eine permanente

Zuerst geht es an SuperSu. Es bietet ein binäres Upgrade an. Aktualisieren Sie wie üblich. Reboot ablehnen.

Zweitens - nur für Emulatoren relevant. Die gleiche AVD. In der unteren Zeile werden Änderungen im Systemabbild nicht gespeichert. Sie müssen sie für sich behalten.

Es gibt bereits Anweisungen für verschiedene Emulatoren.

Bei AVD können Sie versuchen, eine temporäre Datei system.img zu finden, sie irgendwo zu speichern und beim Starten des Emulators zu verwenden.

In Windows befindet es sich im %LOCALAPPDATA%\Temp\AndroidEmulator und hat einen Namen wie TMP4980.tmp.

Sie kopieren es in einen Ordner mit avd-Gerät (%HOMEPATH%\.Android\avd\%AVD_NAME%.avd\) und wurden in system.img umbenannt.

Jetzt wird es beim Start anstelle des üblichen verwendet. True Wenn das Image im SDK aktualisiert wird, wird es das alte haben.

In diesem Fall müssen Sie diesen system.img entfernen und den Vorgang bei seiner Erstellung wiederholen.

Detailliertes Handbuch in 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: 1. Führen Sie den Emulator manuell aus Gehen Sie in den sdk-Ordner sdk\tools\lib64\qt\lib. Führen Sie diesen Emulator mit den Optionen -writable-system -selinux disabled.__ aus.

F:\Android\sdk\tools\lib64\qt\lib>F:\Android\sdk\tools\emulator.exe -avd 7.0_x86 -verbose -writable-system -selinux disabled
  1. Sie müssen adbd von root neu starten:

    adb -s emulator-5554 root

Und remount system:

adb -s emulator-5554 remount

Es kann nur einmal pro Run-Emulator gespendet werden. Und jedes andere Remount kann den Schreibmodus unterbrechen. Aus diesem Grund müssen Sie keine weiteren Befehle mit remount ausführen, wie mount -o remount,rw /system.

Andere Schritte bleiben gleich - laden Sie binär hoch, führen Sie binär als Daemon aus und so weiter.

Bild von AVD Android 7 x86 mit root:  AVD Android 7 x86 with root


Wenn beim Ausführen von su binary ein Fehler über PIE angezeigt wird, laden Sie eine falsche Binärdatei in den Emulator hoch. Sie müssen die Binärdatei su.pie im Archiv hochladen, im Emulator muss sie jedoch als su und nicht als su.pie bezeichnet werden.

19
Enyby

Ich glaube, der einfachste Weg ist das Erstellen eines Alias ​​für den Befehl sh, z.

adb Shell
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/bin
cat sh > su && chmod 4775 su

Getestet mit Android Emulator 3.0 und höher.

13
newbie

Hier mein Paket mit allem, was du brauchst ... oder du kannst dieses Skript verwenden

echo on
set device=emulator-5554
set avd_name=
set adb=d:\Poprygun\DevTools\Android\Android-sdk\platform-tools\adb -s %device%
set emulator=d:\Poprygun\DevTools\Android\Android-sdk\emulator\emulator
set Arch=x86
set pie=

echo Close all Android emulators and press any key
pause
start %emulator% -avd Nexus_One_API_25 -verbose -writable-system
echo Wait until Android emulator loading and press any key
pause

%adb% start-server
%adb% root
%adb% remount
%adb% Shell setenforce 0
%adb% install D:\SuperSU\SuperSU.apk
%adb% Push D:\SuperSU\su\%Arch%\su.pie /system/bin/su
%adb% Shell chmod 0755 /system/bin/su
%adb% Push D:\SuperSU\su\%Arch%\su.pie /system/xbin/su
%adb% Shell chmod 0755 /system/xbin/su
%adb% Shell su --install
%adb% Shell "su --daemon&"
pause
exit /b
2
Poprygun

Ich habe viele der oben genannten Vorschläge ausprobiert, einschließlich SuperSU. Ich konnte keine Arbeit finden, fand aber etwas viel Einfacheres, das für meine Zwecke funktionierte. In meinem Fall wollte ich sqlite nur mit dem Befehl Prompt ausführen. Ich habe einfach einen Emulator mit einer älteren Android-Version (Lollipop) hochgefahren und sofort den Root-Zugriff erhalten.

1
Alan Todtenkopf

Ich habe einen Teil der Methode aus den obigen Lösungen verwendet; Sie funktionierten jedoch nicht vollständig. Bei der neuesten Version von Andy funktionierte dies für mich:

Auf Andy (Root Shell) [Klicken Sie mit der rechten Maustaste auf das HandyAndy-Symbol und wählen Sie Term Shell].

Führen Sie in der Shell die folgenden Befehle aus:

mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/bin
cat sh > su && chmod 4775 su

Installieren Sie dann SuperSU und die SU-Binärdatei. Dies wird die soeben erstellte SU-Binärdatei ersetzen. (Optional) Entfernen Sie SuperSU und installieren Sie Superuser by CWM. Installieren Sie die su-Binärdatei erneut. __ Jetzt funktioniert root!

1
obc7787

Versuchen Sie einen anderen Weg, um diese Frage zu lösen.

Verwenden Sie Genymotion anstelle des Standard-Android-Emulators. Es ist standardmäßig verwurzelt. Es ist viel einfacher und eher wie ein normales Telefon. Es ist kostenlos für den persönlichen Gebrauch.

Ich habe diese Frage gefunden, weil ich das Xposed-Framework auf dem Default Android Emulator installieren möchte. Diese Installation erfordert root und Flash mit einer benutzerdefinierten Wiederherstellung (z. B. TWRP). Beide sind für den Standard-Android-Emulator schwierig. Endlich habe ich Genymotion benutzt und alles in wenigen Minuten erledigt.

1
user2360478

Ich habe gerade ersetzt und Attribute für su zu ~/Android/Sdk/System-Images/Android-22/google_apis/x86/system.img Vergeben. Jetzt habe ich auf Android 5 immer root, selbst für neue Systeme, es reicht Installieren Sie SuperSu.apk

Android 6 is necessary only
adb root
adb Shell
>/system/xbin/su --daemon &
>setenfoce 0

danach sieht SuperSu.apk root. Ich aktualisiere die Binärdatei jedoch nicht

0
xWeb