Ich habe alle Android SDK-Versionen (von 1.5 bis 2.3.3) und habe viele Methoden ausprobiert, um im Android-Emulator root zu werden. Ich benutze kein Android-Gerät und teste alles auf dem Emulator (AVD).
Ich muss Root-Zugriff in einem der Android-Emulatoren erhalten, um die Funktionen "iptables" und "Busybox" nutzen zu können. Und um iptables verwenden zu können, muss ich Root-Zugriff haben. Mindestens der Befehl 'su' sollte im Terminalemulator ausgeführt werden.
Ich habe auch z4root
Anwendung installiert ,
Aber es dauert sehr lange und endet nicht mit dem Wurzeln und bleibt stecken. Einige sagen, wenn wir das System auf unter RC30 herunterstufen, können wir auf diese Weise Root-Zugriff erhalten. Wenn dies wahr ist, wie geht das? Ich benutze sowohl Linux als auch Windows.
Bitte jemand sagt mir eine Methode, um meinen Emulator zu rooten.
quelle
Antworten:
Diese Antworten sind alle unnötig kompliziert :)
quelle
adb root
Ergebnissen in "adbd kann in Produktionsbuilds nicht als Root ausgeführt werden". Verwenden Sie einen bestimmten Emulator? Bitte geben Sie weitere Details an.adb root
der Fehler auftrittadbd cannot run as root in production builds
, lesen Sie stackoverflow.com/a/45668555/1682419 - Sie benötigen ein "Google APIs- Systemabbild " anstelle eines "Google Play-Systemabbilds".Wie root Android Emulator (getestet auf Android 7.1.1 / Nougat)
Anforderungen :
SuperSU App (Chainfire) neueste Version 2.82
Wiederherstellung flashable.zip (enthält su binär)(Hier ist ein alternativer Backup- Link, der vom XDA-Benutzer Ibuprophen für flashbare Zipsbereitgestellt wird,wenn der Hauptlink nicht funktioniert: Flashable Zip-Releases )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
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.
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 zuxbin
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 diesu
und nichtsu.pie
Ändern Sie die Berechtigungen der su-Binärdatei
adb -e shell su root cd /system/bin chmod 06755 su
Wichtig!! Beachten Sie den binären Pfad su (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!! Beachten Sie den Abstand
SELinux auf Permissive setzen (dh SE Linux ausschalten)
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 Standardeinstellungsystem.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 dersystem.img
Methode nicht funktioniert):Im Idealfall ähnelt es eher dem Ruhezustand des virtuellen Geräts mit intakter Konfiguration, daher bleibt alles erhalten.
Schnappschüsse
Dies impliziert, dass die einzige Voraussetzung zum Starten des Emulators das Hinzufügen des
-writable-system
Parameters zum normalenemulator -avd [avdname]
Befehl zum Starten des Emulators ist. ( Wenn Sie den Emulator nur mitemulator -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;
Irvin H: Rooting des Android-Emulators auf Android Studio 2.3 ((Android 4.4)
Android AVD-Root-Zugriff schlägt fehl.
quelle
su --install && su --daemon&
auf dem Emulator ausführen muss , gefolgt vonsetenforce 0
Root. Kennen Sie eine dauerhafte Lösung für root beim Neustart?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 einen AVD unter Android 2.2:
Es wird davon ausgegangen, dass sich die su-Binärdatei im Arbeitsverzeichnis befindet. Su und Superuser finden Sie 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 root.
quelle
-partition-size
Option zum Festlegen der Partitionsgröße hinzufügen . Versuchen Sie, Ihren Emulator mittools/emulator -avd MyAndroidVirtualDeviceName -partition-size 256
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
:adb root
adb remount
Für AVD mit 5.1.1 und 6.0 habe ich das nächste Skript in Windows verwendet:
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 erforderliche Gerät anzugeben:
set adb=adb -s emulator-5558
undset arch=x64
. Wenn Sie Android über oder gleich 5.0 ausführen, wechseln Sieset pie=
zuset pie=.pie
. Starte es. Sie erhalten einen temporären Stamm für den aktuellen Lauf.Wenn bei der erneuten Bereitstellung der Systempartition ein Fehler aufgetreten ist, müssen Sie AVD über die Befehlszeile starten. Siehe unten erster 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 Standardeinstellung system.img.
So konvertieren Sie die resultierende temporäre Wurzel in eine permanente
Erstens - es geht an SuperSu. Es bietet ein binäres Upgrade. Update auf normale Weise. Neustart ablehnen.
Zweitens - nur für Emulatoren relevant. Die gleiche AVD. Unter dem Strich werden Änderungen im Systemabbild nicht gespeichert. Sie müssen sie für sich behalten.
Es gibt bereits Anweisungen, die für verschiedene Emulatoren variieren.
Für 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 in der
%LOCALAPPDATA%\Temp\AndroidEmulator
und hat einen Namen wieTMP4980.tmp
.Sie kopieren es in einen Ordner avd device (
%HOMEPATH%\.android\avd\%AVD_NAME%.avd\
) und benennen es in umsystem.img
.Jetzt wird es zu Beginn anstelle des üblichen verwendet. Richtig, wenn das Image im SDK aktualisiert wird, hat es das alte.
In diesem Fall müssen Sie dies entfernen
system.img
und den Vorgang bei seiner Erstellung wiederholen.Ausführlicheres Handbuch in russischer Sprache: 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. Emulator manuell ausführen. Gehen Sie zum SDK-Ordner
sdk\tools\lib64\qt\lib
. Führen Sie diesen Ordner-Emulator mit folgenden Optionen aus-writable-system -selinux disabled
:Sie müssen
adbd
von root neu starten :adb -s emulator-5554 root
Und Remount-System:
Es kann nur einmal pro Laufemulator gespendet werden. Und jedes andere Remount kann den Schreibmodus unterbrechen. Aus diesem Grund müssen Sie keine anderen Befehle mit Remount ausführen, wie z
mount -o remount,rw /system
.Andere Schritte bleiben gleich - laden Sie Binärdateien hoch, führen Sie Binärdateien als Daemon aus und so weiter.
Bild von AVD Android 7 x86 mit root:
Wenn beim Ausführen der
su
Binärdatei ein Fehler in Bezug auf PIE angezeigt wird, wird eine falsche Binärdatei in den Emulator hochgeladen. Sie müssen einesu.pie
im Archiv benannte Binärdatei hochladen , auf dem Emulator muss sie jedoch alssu
nicht benannt seinsu.pie
.quelle
update binary in SuperSU and store system.img from temp folder as replace of default system.img.
Ich glaube, dass der einfachste Weg darin besteht, einen Alias für den Befehl zu erstellen
sh
, zGetestet mit Android Emulator 3.0 und höher.
quelle
mount: '/system' not in /proc/mounts
Hier mein Rucksack mit allem was du brauchst. Oder Sie können dieses Skript verwenden:
quelle
Ich habe gerade Attribute für su ersetzt und ~ / Android / Sdk / system-images / android-22 / google_apis / x86 / system.img zugewiesen und jetzt auf Android 5 habe ich immer root, auch für neue Systeme, es reicht aus, SuperSu zu installieren. apk
Danach sieht SuperSu.apk root. Aber ich aktualisiere die Binärdatei nicht
quelle
Ich habe einen Teil der Methode aus den obigen Lösungen verwendet. Sie funktionierten jedoch nicht vollständig. Bei der neuesten Version von Andy hat das bei mir funktioniert:
Auf Andy (Root Shell) [Um zu erhalten, 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:
Installieren Sie dann SuperSU und installieren Sie die SU-Binärdatei. Dies ersetzt die soeben erstellte SU-Binärdatei. (Optional) Entfernen Sie SuperSU und installieren Sie Superuser per CWM. Installieren Sie die su-Binärdatei erneut. Jetzt funktioniert root!
quelle
Ich habe viele der oben genannten Vorschläge ausprobiert, einschließlich SuperSU, und konnte keine zum Laufen bringen, fand aber etwas viel Einfacheres, das für meine Zwecke funktionierte. In meinem Fall wollte ich SQLite nur an der Eingabeaufforderung ausführen können. Ich habe einfach einen Emulator mit einer älteren Version von Android (Lollipop) hochgefahren und sofort Root-Zugriff erhalten.
quelle
Ich habe festgestellt, dass der Standard-API 23 x86_64-Emulator standardmäßig gerootet ist.
quelle