Ich verwende das offizielle Android SDK mit dem Android Emulator, um ein virtuelles Android 7.1.1 (x86) zu erstellen. Ich muss eine Reihe von Dingen testen, unter anderem benötigen einige Anwendungen Root-Zugriff auf das Gerät.
Jetzt weiß ich, dass ich es kann adb root
und ich habe eine Root-Shell, aber das erlaubt den Apps, die ich installiere, keinen Root-Zugriff.
Ich habe dieses Thema nun eine Weile recherchiert und verschiedene Ansätze gesehen. Die meisten Antworten wurden vor ziemlich langer Zeit gepostet.
Ich finde es ziemlich seltsam, dass es keine Option zum Umschalten von Root gibt - dies ist schließlich ein SDK.
Wie roote ich ein virtuelles Android-Gerät, auf dem Android 7.1.1 ausgeführt wird, und erlaube installierten Apps effektiv den Root-Zugriff?
Bearbeiten: Ich würde lieber nicht auf kostenpflichtige Emulatoren wie Genymotion zurückgreifen, wenn möglich.
edit2: Dies ist ausschließlich für den persönlichen Gebrauch.
edit3: Genymotion scheint eine praktikable Lösung als alternativer Emulator zu sein. Warum bietet Android SDK/Emulator eine solche Funktion nicht an?
edit4: Die Antwort von xavier_fakerat scheint einwandfrei zu funktionieren, aber seit Android Studio Version 3.1 scheint dies kein dauerhaftes Rooten zu sein. Sobald das AVD neu gestartet wird, ist der Root-Zugriff weg.
So rooten Sie den Android-Emulator (Android 7.1.1/ Nougat)
Ich freue mich, die Community über einen einfacheren Weg zum Rooten des Android-Emulators zu informieren (ausgeführt vom eigenständigen Android SDK)
Anforderungen :
Wiederherstellung flashable.zip (enthält su-Binärdatei) (Hier ist ein alternativer Mirror-Link für flashable zip, wenn der Hauptlink nicht funktioniert: Flashable zip super su 2.82 für alle ROMs )
Hinweis: SuperSU ist jetzt veraltet, aber diese Methode funktioniert immer noch, um den Emulator zu rooten, und es werden weitere Updates für neuere Rooting-Methoden gegeben.
Anweisungen
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 zeigt es beim Ausführen einen Bildschirm wie unten gezeigt mit der Meldung „Es ist keine SU-Binärdatei installiert …“. Dieser Fehler bestätigt nur, dass das Gerät noch nicht gerootet ist.
Wie es nahelegt, müssen wir dem Emulator die Berechtigung zum Schreiben von Systemdateien erteilen.
Geben Sie dazu den folgenden Code ein:emulator.exe -avd {emulator_name} -writable-system
Hinweis: Navigieren Sie zum Tools -Ordner, in dem das Android SDK installiert ist, und öffnen Sie dort die Eingabeaufforderung, indem Sie die Umschalttaste drücken und mit der rechten Maustaste klicken.
Wichtig! Verwenden Sie nur die su-Binärdatei, die zu Ihrer avd-Architektur passt, z. B. x86, arm usw., und notieren Sie sich den Pfad, in dem Sie diese Binärdateien extrahiert haben.
adb root
adb remount
Jetzt ist es an der Zeit, die su-Binärdatei zu pushen:
Dies ist der Code, den ich erfolgreich verwendet habe : adb -e push C:\%USERPROFILE%\Desktop\rootemu\x86\su.pie /system/bin/su
(Egal über meinen spezifischen Standort von su binär, jeder Standort ist in Ordnung, solange es keinen Leerraum gibt)
Wenn dies fehlschlägt, versuchen Sie es stattdessen mit Pushen in dieses Verzeichnis /system/xbin/su
. Verwenden Sie auch für Emulatoren mit Android 5.1 und darunter das su
und nichtsu.pie
Als nächstes wollen wir die Berechtigungen von su ein wenig ändern. 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 su-Binärpfad (meiner ist /system/bin)
install
Direktive auf su binary und setzen Sie adaemon
Geben Sie die Codes ein:
su --install
und zum Einrichten des Daemons:
su --daemon&
Wichtig!! Abstand beachten
setenforce 0
Das wars so ziemlich!! Öffnen Sie die SuperSU-App und es kann sein, dass Sie aufgefordert werden, Binärdateien zu aktualisieren. Sie können die normale Methode verwenden.
Öffnen Sie jede App, die SU-Berechtigungen erfordert, nur um dies zu überprüfen, und tatsächlich fragt SuperSU, ob Sie ihr SU-Berechtigungen erteilen möchten.
Bemerkungen
Die meisten Referenzinhalte waren für ältere Android-Versionen und daher der Grund für verschiedene Befehle und Pfade, die ich geändert habe.
Besondere Anerkennungen;
Besonderer Dank geht an Irvin H, dessen Tutorial mich dazu inspirierte, diesen Leitfaden zu erstellen, nachdem ich selbst unzählige Male gescheitert war und auch nachdem ich gesehen hatte, dass viele Benutzer ihre Emulatoren ebenfalls rooten mussten. Ich hoffe, dass dies auch viel profitieren wird
Irvin H: Rooten des Android-Emulators – auf Android Studio 2.3 ((Android 4.4)
#Aktualisieren
Wie von SaAtomic kommentiert,
Dieser Ansatz ist auch mit Android Studio 3.0.1 noch praktikabel
Nach dem Upgrade auf die Emulatorversion und höher wird die Beibehaltung des Stammverzeichnisses durch die Snapshot-Funktion27.2.9
jetzt viel einfacher (wenn das Kopieren der system.img-Methode nicht funktioniert):
Im Idealfall ist es eher so, als ob das virtuelle Gerät mit intakter Konfiguration in den Ruhezustand versetzt wird, daher bleibt alles erhalten.
Schnappschüsse
Sie können jetzt mehrere AVD-Snapshots für eine bestimmte Gerätekonfiguration speichern und auswählen, welcher der gespeicherten Snapshots geladen werden soll, wenn Sie den Emulator starten. 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 einem ausgeschalteten Zustand.
Dies impliziert, dass die einzige Anforderung zum Starten des Emulators darin besteht, den -writable-system
Parameter zum normalen Emulatorbefehl hinzuzufügen, um den Emulator -avd [avdname]
zu starten. (Das Ausführen des Emulators nur mit emulator -avd [avdname] startet die gerootete Version/Kopie nicht oder kann zu einem Fehler führen.)
Getestet auf API-Level 22
SaAtomisch
Panchajanya Sarkar
SaAtomisch
SaAtomisch
Vivek Anand
xavier_fakerat
Google APIs Intel x86 Atom System Image
anstatt es zu verwendenGoogle Play Intel x86 Atom System Image
SaAtomisch
su
ist die Binärdatei/system/xbin/su
für ein Pixel AVD mit Android 7.1.1 (API 25) drin und egal was ich versuche, das Rooten bleibt nicht bestehen. Nach Neustarts ist das AVD nicht mehr gerootet.Kaleb Fenton
xavier_fakerat
Pookie