我无法正常地从命令提示符停止模拟器。
我使用Linux Ubuntu 10.04版本(64位)和Android SDK版本是2.3。
我开始使用它的快照模拟器。 现在我关心的是优雅地closuresEmulator的运行实例。 我已经尝试kill -9(进程ID为模拟器运行)closures了模拟器,但下一次它不启动,因为它的快照被损坏。 请帮助我避免强制closures模拟器。
任何想法如何解决它?
请不要乱用kill -9
,这是一个非常不好的习惯。
正确的命令是
$ adb emu kill
或者我应该更好地说,这是正确的命令,直到最近adb
变化。 似乎有人忘了将身份验证添加到它。
在最新的(截至2016年6月)最新的adb
版本是
$ adb version Android Debug Bridge version 1.0.36 Revision 0a04cdc4a62f-android
当你尝试
$ adb emu kill
没有任何反应,这就是为什么
... connect(3, {sa_family=AF_INET, sin_port=htons(5554), sin_addr=inet_addr("127.0.0.1")}, 16) = 0 write(3, "kill\nquit\n", 10) = 10 read(3, "\377\373\1", 8192) = 3 read(3, "\377\373\3\377\373\0\377\375\0", 8192) = 9 read(3, "Android Console: Authentication required\r\nAndroid Console: type 'auth <auth_token>' to authenticate\r\nAndroid Console: you can find your <auth_token> in \r\n'/home/diego/.emulator_console_auth_token'\r\nOK\r\n", 8192) = 202 read(3, "k\33[K", 8192) = 4 read(3, "\33[Dki\33[K", 8192) = 8 read(3, "\33[D\33[Dkil\33[K\33[D\33[D\33[Dkill\33[K", 8192) = 28 read(3, "\r\nKO: unknown command, try 'help'\r\n", 8192) = 35 read(3, "q\33[K\33[Dqu\33[K", 8192) = 12 read(3, "\33[D\33[Dqui\33[K\33[D\33[D\33[Dquit\33[K", 8192) = 28 read(3, "\r\n", 8192) = 2 read(3, "", 8192) = 0 close(3) = 0 exit_group(0) = ? +++ exited with 0 +++
那我们需要另一个解决方案
如果以前的命令不起作用(如某些用户报告的Windows),您可以尝试( 在下一个命令5554是模拟器使用的端口 )。
将标记文件( ~/.emulator_console_auth_token
)的内容复制到剪贴板,以便在您的telnet会话期间粘贴它:
$ telnet localhost 5554 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Android Console: Authentication required Android Console: type 'auth <auth_token>' to authenticate Android Console: you can find your <auth_token> in '/home/user/.emulator_console_auth_token' OK auth <YOUR_TOKEN_HERE> Android Console: type 'help' for a list of commands OK Android console command help: help|h|? print a list of commands crash crash the emulator instance kill kill the emulator instance quit|exit quit control session redir manage port redirections power power related commands event simulate hardware events avd control virtual device execution finger manage emulator fingerprint geo Geo-location commands sms SMS related commands cdma CDMA related commands gsm GSM related commands rotate rotate the screen by 90 degrees try 'help <command>' for command-specific help OK
然后,您可以在命令提示符处输入kill
kill OK: killing emulator, bye bye Connection closed by foreign host.
和模拟器将退出。
但是等等,应该有更好的办法。 而事实上呢!
这个要点提供了一个使用期望的自动化解决方案,而不是每次都必须切换和通过认证令牌。
希望你觉得它有用。
在Ubuntu 16-04上,使用ADB版本1.0.32,我在Docker容器中运行Android 4.4(API 19)的模拟器。 控制台的暴露端口是30004,亚行的暴露端口是30005。
我可以通过adb connect 0.0.0.0:30005
连接到它。
为了杀死仿真器,我必须使用adb -s emulator-30004 emu kill
,使用0.0.0.0:30005
给我error: no emulator detected
。
我在Ubuntu的问题在模拟器将不断打开新的进程。 我永远不能关闭模拟器,它没有反应。
我用htop
htop中的步骤: