Using Android Emulator's Root Shell via Command Line When starting an Android emulator (SDK 24.4.1) on linux by command line you should be able to get a root shell by using the -shell command line option. At least that's what the manual says

https://developer.android.com/studio/run/emulator-commandline.html
(Create a root shell console on the current terminal. You can use this command even if the adb daemon in the emulated system is broken. Pressing Ctrl-c from the shell stops the emulator instead of the shell)

But when starting the emulator like

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


I do see the shell output of the Android emulator booting, but I can not send any commands to it, i.e. ls.

Also opening a tcp port for the shell and communicating via telnet shows the same behavior.

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

telnet localhost 4444


There's not much information about this topic on the internet, but perhaps someone already dealt with this topic. Thanks in advance!
From android source, line 698:

seems the '-shell' option is as same as '-logcat' option, thus I think the documentation is not described well and of course the '-shell' option won't bring you an interactive root shell from the virtual serial.

Maybe I'm wrong, I only tested this on MacOS.

With further test, as same as this guy's post, the '-show-kernel' will actually get you the kernel log and an interactive rootable console.