如何通过命令行closuresAndroid模拟器

我无法正常地从命令提示符停止模拟器。

我使用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中的步骤:

  1. F4来过滤。
  2. 过滤“avd”。
  3. F5为树。
  4. 找到并点击父进程。
  5. F9提高杀人的菜单。
  6. 选择信号9并进入。