Rooten Sie das virtuelle Android-Gerät mit Android 7.1.1

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 rootund 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.

Antworten (1)

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 :

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

  1. 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 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.

Geben Sie hier die Bildbeschreibung ein

  1. Machen Sie die Systempartition des Emulators beschreibbar
  • 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.

  1. Pushen von su binär in das Systemverzeichnis
  • Extrahieren Sie die Recovery flashable.zip (enthält die Sub-Binärdateien verschiedener Architekturen)

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.

  • Stellen Sie sicher, dass Sie adb als root ausführen und auch neu einhängen müssen. Geben Sie einfach diese Codes ein

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 suund nichtsu.pie

  1. Ändern Sie die Berechtigungen der su-Binärdatei
  • 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)

  1. Setzen Sie die installDirektive auf su binary und setzen Sie adaemon

Geben Sie die Codes ein:

su --install

und zum Einrichten des Daemons:

su --daemon&

Wichtig!! Abstand beachten

  1. Festlegen von SELinux auf Permissive (dh Deaktivieren von SE Linux)
  • Deaktivieren Sie schließlich Selinux durch diesen Code:

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.

Geben Sie hier die Bildbeschreibung ein

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-systemParameter 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

Vielen Dank für die ausführliche Antwort. Ich habe es noch nicht ausprobiert, aber das scheint eine praktikable Lösung zu sein!
@SaAtomic, deine Schritte sind sehr nützlich, mehr noch, man kann Supersu 2.82/Magisk auch mit einer benutzerdefinierten Wiederherstellung flashen, z Laufende Geräte.... Danke..
Ich habe dies gerade mit Android SDK 2.3.3 (AVD Manager) und virtuellem Pixel mit Android 7.1.1 getestet. Funktioniert auf Anhieb wie beschrieben. Danke dir!
Update: Dieser Ansatz ist mit Android Studio 3.0.1 immer noch praktikabel
Ich habe Ihren Ansatz ausprobiert, bekomme aber im dritten Schritt einen Fehler. Ich habe verwendet: Android Studio 3.0.1 auf dem Mac, Nexus 5X mit Android 7.1, also lautet der Name des Emulators zu Ihrer Information Nexus_5X_API_25. Beim Ausführen von adb root, wie im 3. Schritt angegeben, erhalte ich die folgende Fehlermeldung: <br/>$<b>adb root</b><br/> <b>adbd kann in Produktions-Builds nicht als root ausgeführt werden</b> Lassen Sie mich wissen, ob Ihr Ansatz in diesem Moment noch funktioniert. Vielen Dank.
Es ist sehr wahrscheinlich, dass Sie ein falsches Emulator-Image verwenden, das Sie verwenden müssen, Google APIs Intel x86 Atom System Imageanstatt es zu verwendenGoogle Play Intel x86 Atom System Image
Update: Nach dem letzten Update von Android Studio auf 3.1 suist die Binärdatei /system/xbin/sufü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.
$ adb remount 1 Läuft nicht als root. Versuchen Sie zuerst "adb root".
@SaAtomicSie müssen den Emulator aktualisieren und Snaptop zum Booten verwenden
Der erste Link ist tot