Root Android virtuelles Gerät mit Android 7.1.1

12

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 erfordern einige Anwendungen root-Zugriff auf das Gerät.

Jetzt weiß ich, dass ich es kann adb rootund eine Root-Shell habe, aber die Apps, die ich installiere, haben dadurch 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 Möglichkeit gibt, Root umzuschalten - das ist schließlich ein SDK.

Wie kann ich ein virtuelles Android-Gerät rooten, auf dem Android 7.1.1 ausgeführt wird, und den Root-Zugriff für installierte Apps effektiv zulassen?

edit: Ich würde lieber nicht auf bezahlte 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 zu sein, als alternativer Emulator. 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 keine dauerhafte Verwurzelung zu sein. Nach dem Neustart der AVD ist der Root-Zugriff weg.

SaAtomic
quelle

Antworten:

10

Wie bekomme ich root auf dem Android Emulator (Android 7.1.1 / Nougat)

Ich freue mich, die Community über einen einfacheren Weg zum Root-Android-Emulator zu informieren (mit einem eigenständigen Android-SDK).

Anforderungen :

Hinweis: SuperSU ist jetzt veraltet, aber diese Methode funktioniert immer noch, um den Emulator zu rooten. Für neuere Root-Methoden werden weitere Updates bereitgestellt.

Anleitung

  1. Installieren Sie die SuperSu.apk

    • Installieren Sie zuerst die SuperSu-App. Ziehen Sie sie einfach per Drag-and-Drop (wenn Sie die neueste Emulator-Version verwenden oder über adb von der Seite laden adb –e install supersu.apk).

    • Nach der Installation wird beim Ausführen ein Bildschirm wie unten gezeigt angezeigt, der angibt, dass keine SU-Binärdatei installiert ist. Dieser Fehler bestätigt nur, dass das Gerät noch nicht gerootet ist.

Bildbeschreibung hier eingeben

  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 Android SDK installiert ist, und öffnen Sie dort die Eingabeaufforderung, indem Sie die Umschalttaste drücken und mit der rechten Maustaste klicken.

  1. Pushing su binary im Systemverzeichnis

    • Extrahieren Sie die Datei Recovery flashable.zip (die die su-Binärdateien verschiedener Architekturen enthält).

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 einbinden 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:\%USERPROFILE%\Desktop\rootemu\x86\su.pie /system/bin/su

(Egal, an welchem ​​Ort ich bin. Jeder Ort ist in Ordnung, solange es keinen Leerraum gibt.)

Wenn dies fehlschlägt, versuchen Sie dies stattdessen in dieses Verzeichnis zu verschieben /system/xbin/su. Auch für Emulatoren mit Android 5.1 und niedriger verwenden Sie das suund nichtsu.pie

  1. Ändern Sie die Berechtigungen der su-Binärdatei

    • Als nächstes wollen wir ein wenig die Berechtigungen von su binary ändern. Wir müssen dies in Emulator-Gerät durch ADB tun:

    adb –e shell su root cd /system/bin chmod 06755 su

Wichtig!! Beachten Sie den binären Pfad su (mein Pfad 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. SELinux auf Permissive setzen (dh SE Linux ausschalten)

    • Schließlich schalten Sie Selinux durch diesen Code aus:

setenforce 0

Das wars so ziemlich!! Öffnen Sie die SuperSU-App. Möglicherweise werden Sie aufgefordert, die Binärdateien zu aktualisieren. Verwenden Sie dazu die normale Methode.

Öffnen Sie alle Apps, für die SU-Berechtigungen erforderlich sind, und prüfen Sie, ob Sie SuperSU-Berechtigungen gewähren möchten.

Bildbeschreibung hier eingeben

Bemerkungen

Der größte Teil der Referenzinhalte betraf ältere Android-Versionen und war daher der Grund für verschiedene Befehle und Pfade, die ich geändert habe.

Besondere Anerkennungen;

Ein besonderer Dank geht an Irvin H, dessen Tutorial mich dazu inspiriert hat, diesen Leitfaden zu erstellen, nachdem ich unzählige Male gescheitert bin und auch die Notwendigkeit erkannt habe, dass viele Benutzer auch ihre Emulatoren rooten müssen. Ich hoffe, dass dies auch viel nutzen wird

Irvin H: Rooting des Android-Emulators - auf Android Studio 2.3 ((Android 4.4)

Aktualisieren

Wie von SaAtomic kommentiert,

Dieser Ansatz ist mit Android Studio 3.0.1 weiterhin möglich

Nach dem Upgrade auf die Emulator-Version 27.2.9und höher wird das Beibehalten des Stamms durch die Snapshot-Funktion jetzt viel einfacher (wenn das Kopieren der system.img-Methode nicht funktioniert):

Im Idealfall wird das virtuelle Gerät eher mit intakter Konfiguration in den Ruhezustand versetzt, sodass alles erhalten bleibt.

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 Energiesparmodus und dem Starten aus dem ausgeschalteten Zustand.

Dies bedeutet, dass der Emulator nur gestartet werden muss, indem der -writable-systemParameter zum normalen Emulatorbefehl hinzugefügt wird, um den Emulator -avd [avdname]zu starten. (Das Ausführen des Emulators nur mit dem Emulator -avd [avdname] startet die gerootete Version / Kopie nicht oder kann zu einem Fehler führen.)

Getestet auf API Level 22

xavier_fakerat
quelle
1
Vielen Dank für die ausführliche Antwort. Ich habe es noch nicht ausprobiert, aber dies scheint eine praktikable Lösung zu sein!
SaAtomic
1
@SaAtomic, Ihre Schritte sind sehr nützlich. Sie können Supersu 2.82 / Magisk auch mit einer benutzerdefinierten Wiederherstellung, z. B. TWRP, flashen und problemlos root beziehen Laufen Geräte .... Vielen Dank ..
Panchajanya Sarkar
Ich habe dies gerade mit Android SDK 2.3.3 (AVD Manager) und Virtual Pixel unter Android 7.1.1 getestet. Funktioniert genauso wie beschrieben. Vielen Dank!
SaAtomic,
1
Update: Dieser Ansatz ist mit Android Studio 3.0.1
SaAtomic
1
Es ist sehr wahrscheinlich , dass Sie einen falschen Emulator Bild verwenden müssen Sie das verwenden , Google APIs Intel x86 Atom System ImageanstattGoogle Play Intel x86 Atom System Image
xavier_fakerat