Wie root Android Emulator (getestet auf Android 7.1.1 / Nougat)
Anforderungen :
Anleitung
Installieren Sie die SuperSu.apk
Installieren Sie zuerst die SuperSu-App, ziehen Sie sie einfach per Drag & Drop (wenn Sie die neueste Emulatorversion ausführen oder über adb seitenladen, dh adb -e install supersu.apk
)
Nach der Installation wird beim Ausführen ein Bildschirm wie unten gezeigt angezeigt, der anzeigt, dass keine SU-Binärdatei installiert ist. Dieser Fehler bestätigt nur, dass das Gerät noch nicht gerootet ist.
Machen Sie die Systempartition des Emulators beschreibbar
Wie vorgeschlagen, müssen wir dem Emulator die Berechtigung zum Schreiben von Systemdateien erteilen.
Geben Sie dazu den folgenden Code ein: emulator -avd {emulator_name} -writable-system
Wenn Sie mehr als eine AVD haben, können Sie mit dem folgenden Befehl eine Liste der AVDs abrufen: emulator -list-avds
Hinweis: Navigieren Sie zu dem Ordner " tools ", in dem Android SDK installiert ist, und öffnen Sie dort die Eingabeaufforderung, indem Sie die Umschalttaste drücken und mit der rechten Maustaste klicken.
Push-Binärdatei im Systemverzeichnis
- Extrahieren Sie die Datei flashable.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 erneut bereitstellen müssen. Geben Sie einfach diese Codes ein
adb root
adb remount
Jetzt ist es Zeit, die su-Binärdatei zu pushen:
Dies ist der Code, den ich erfolgreich verwendet habe :adb -e push C:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su
(Vergiss meinen spezifischen Speicherort für su binary, jeder Speicherort ist in Ordnung, solange kein Leerzeichen vorhanden ist.)
Hinweis: Um dies vorher in der Konsole herauszufinden bin
oder zu xbin
tun:> adb shell
,>ls /system/xbin/su
Wenn dies fehlschlägt, versuchen Sie stattdessen, in dieses Verzeichnis zu pushen /system/xbin/su
. Auch für Emulatoren mit Android 5.1 und darunter verwenden Sie die su
und nichtsu.pie
Ändern Sie die Berechtigungen der su-Binärdatei
- Als nächstes nehmen wir einige Änderungen an den Berechtigungen von su binary vor. Wir müssen dies im Emulatorgerät über adb tun:
adb -e shell
su root
cd /system/bin
chmod 06755 su
Wichtig!! Beachten Sie den binären Pfad su (meiner ist / system / bin)
- Setzen Sie die
install
Direktive auf su binary und setzen Sie adaemon
Geben Sie die Codes ein:
su --install
und zum Einrichten des Daemons:
su --daemon&
Wichtig!! Beachten Sie den Abstand
SELinux auf Permissive setzen (dh SE Linux ausschalten)
- Schalten Sie schließlich Selinux über diesen Code aus:
setenforce 0
Öffnen Sie die SuperSU-App und Sie werden möglicherweise aufgefordert, die Binärdateien zu aktualisieren. Sie können die normale Methode verwenden.
Hinweis: Wenn Bootloops auftreten, aktualisieren Sie die Binärdateien lieber nicht, sondern verwenden Sie sie einfach so, wie sie sind.
Das wars so ziemlich!!
Öffnen Sie alle Anwendungen, für die SU-Berechtigungen erforderlich sind, und überprüfen Sie SuperSU, ob Sie ihr su-Berechtigungen erteilen möchten.
Damit das Root-Update su binär aktualisiert wird (mit der Normal-Methode), kopieren Sie system.img aus dem temporären Verzeichnis ( Users\AppData\Local\Temp\Android Emulator
die Datei wird normalerweise zufällig benannt, z. B. 1359g.tmp
mit einer großen Größe) und ersetzen Sie die Standardeinstellung system.img
.
Update :
Ich habe festgestellt, dass es unter Linux einfacher ist, ein temporäres System-Image zu erhalten als unter Windows. Sie können versuchen, ein Schnappschussbild zu verwenden.
Update 4. August 2018
Mit dem Aufkommen des Emulators 27.3.x
wird das Beibehalten des Stamms durch die Snapshot-Funktion erheblich vereinfacht (wenn das Kopieren der system.img
Methode nicht funktioniert):
Im Idealfall ähnelt es eher dem Ruhezustand des virtuellen Geräts mit intakter Konfiguration, daher bleibt alles erhalten.
Schnappschüsse
Sie können jetzt mehrere AVD-Snapshots für eine bestimmte Gerätekonfiguration speichern und auswählen, welche der gespeicherten Snapshots beim Starten des Emulators geladen werden sollen. Das Starten eines virtuellen Geräts durch Laden eines Snapshots ähnelt dem Aufwecken eines physischen Geräts aus dem Ruhezustand, im Gegensatz zum Booten aus dem ausgeschalteten Zustand.
Dies impliziert, dass die einzige Voraussetzung 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 es kann zu einem Fehler kommen. )
Getestet auf API-Ebene 22
Weitere Informationen zu Bootloop-Problemen finden Sie im anderen Beitrag: Android-Emulator: Wie vermeide ich eine Boot-Schleife nach dem Rooten? und Aktualisierungen davon.
Bemerkungen
Der meiste Referenzinhalt war für ältere Android-Versionen und daher der Grund für verschiedene Befehle und Pfade, die ich geändert habe.
Danksagung;