Verwenden der Root-Shell des Android-Emulators über die Befehlszeile

Ich möchte eine Root-Shell bekommen, da mein Adbd abstürzt. Aber die -shellOption funktioniert nicht. Inzwischen habe ich herausgefunden, dass man eine Shell bekommen kann, indem man verwendet -show-kernel. Aber ich möchte mit der Root-Shell per TCP kommunizieren. Es gibt auch ein offenes Problem bei Google: https://code.google.com/p/android/issues/detail?id=202760

Wenn Sie einen Android-Emulator (SDK 24.4.1) unter Linux über die Befehlszeile starten, sollten Sie in der Lage sein, eine Root-Shell mithilfe der -shellBefehlszeilenoption abzurufen. So steht es zumindest im Handbuch

Erstellen Sie eine Root-Shell-Konsole auf dem aktuellen Terminal. Sie können diesen Befehl auch dann verwenden, wenn der adb-Daemon im emulierten System defekt ist. Das Drücken von Strg-C aus der Shell stoppt den Emulator anstelle der Shell

Aber beim Starten des Emulators wie

emulator -netdelay none -netspeed full -avd nougat-x86_64 -gpu off -no-window -shell

Ich sehe die Shell-Ausgabe des Android-Emulators beim Booten, aber ich kann keine Befehle an ihn senden, dh ls.

Auch das Öffnen eines TCP-Ports für die Shell und die Kommunikation über Telnet zeigt das gleiche Verhalten.

emulator -netdelay none -netspeed full -avd nougat-x86_64 -gpu off -no-window -shell-serial tcp::4444,server,nowait
telnet localhost 4444

Es gibt nicht viele Informationen zu diesem Thema im Internet, aber vielleicht hat sich schon jemand mit diesem Thema beschäftigt.

Nutzung adb shellnatürlich. Wenn ich mich erinnere, würde Ihnen ein Emulator diese Shell normalerweise standardmäßig als root geben. Wenn nicht, tun Sie dies für eine Konfiguration, die das Anbieten einer Root-Shell unterstützt, adb rootzuerst (ziemlich offensichtlich funktioniert dies nicht auf einem Verbrauchergerät, das so konfiguriert ist, wie Android für die Konfiguration von Verbrauchergeräten entwickelt wurde).

Antworten (1)

Aus der Android-Quellzeile 698 scheint die -shellOption dieselbe wie -logcatdie Option zu sein, daher denke ich, dass die Dokumentation nicht gut beschrieben ist und die Option Ihnen natürlich -shellkeine interaktive Root-Shell von der virtuellen Serie bringt. Vielleicht irre ich mich, ich habe das nur auf macOS getestet.

Mit einem weiteren Test, der dem Beitrag dieses Typen entspricht , -show-kernelerhalten Sie tatsächlich das Kernel-Protokoll und eine interaktive Root-Konsole.