从命令行停止Android仿真器

从命令行停止Android仿真器,android,android-emulator,Android,Android Emulator,这个问题和我的一样 然而,在尝试了第一个答案中建议的解决方案后,adb emu kill对我来说并不成功 我正在为android应用程序自动化单元测试。我的bash脚本在无头机器上运行。它使用android create avd创建一个android设备,并使用-no window属性执行emulator。然后,它编译测试项目,使用adb连接到仿真器,安装项目并执行我的测试。这一切都很好 现在我需要终止emulator进程,就像参考文章一样,我只能使用kill-9来完成这项工作 Google教程

这个问题和我的一样

然而,在尝试了第一个答案中建议的解决方案后,adb emu kill对我来说并不成功

我正在为android应用程序自动化单元测试。我的bash脚本在无头机器上运行。它使用
android create avd
创建一个android设备,并使用
-no window
属性执行
emulator
。然后,它编译测试项目,使用
adb
连接到仿真器,安装项目并执行我的测试。这一切都很好

现在我需要终止emulator进程,就像参考文章一样,我只能使用
kill-9
来完成这项工作

Google教程只提到如何在GUI环境中停止模拟器


非常感谢您的帮助。

请使用
adb kill server
。这应该会有帮助。 或


adb-s emulator-5554 emu kill
,其中
emulator-5554
是仿真器名称

对于Ubuntu用户,我发现了一个很好的命令来停止所有正在运行的模拟器(感谢)


另一个答案不适用于我(在Windows7上)。但这起到了作用:

telnet localhost 5554
kill
为什么不直接做呢

adb reboot bootloader

adb kill server将杀死所有模拟器并重新启动服务器清理。

连接的设备列表 emulator-5584主机 emulator-5580主机 emulator-5576主机 emulator-5572主机 emulator-5568主机 emulator-5564主机 emulator-5560主机

C:\Users\Administrator>adb-s emulator-5584 emu kill 错误:无法连接到TCP端口5584:无法连接到127.0.0.1:5584:无法建立连接,因为目标计算机主动拒绝了它。(10061)

注意:emulator的gui未运行,但仍在显示

解决方案:

adb kill-server
使用以下命令启动emulator:

emulator.exe -netdelay none -netspeed full -avd Nexus_5X_API_19

我希望这对你有帮助

要停止所有正在运行的模拟器,我们使用以下命令:

adb devices | grep emulator | cut -f1 | while read line; do adb -s $line emu kill; done

要实现自动化,您可以使用任何可以向套接字发送字符串的脚本或应用程序。我个人喜欢cygwin旗下的nc(netcat)。正如我之前所说,我是这样使用它的:

$ echo kill | nc -w 2 localhost 5554

(这意味着将“kill”字符串发送到本地主机上的端口5554,并在2秒钟后终止netcat。)

没有一个解决方案适合我。我必须采用telnet方式,包括身份验证:

AUTH=$(cat "$HOME/.emulator_console_auth_token")

expect << EOF
spawn telnet localhost 5554
expect "OK"
send   "auth $AUTH\r"
expect "OK"
send   "kill\r"
expect "OK"
send   "exit\r"
EOF
AUTH=$(cat“$HOME/.emulator\u console\u AUTH\u token”)

expect我使用这一行,为了便于阅读,分成几行:

adb devices |
 perl -nle 'print $1 if /emulator-(\d+).device$/' |
 xargs -t -l1 -i bash -c "
   ( echo auth $(cat $HOME/.emulator_console_auth_token) ;
     echo kill ;
     yes ) |
   telnet localhost {}"
有时命令

adb -s emulator-5554 emu kill
由于未知原因,无法在我的CI服务器或台式机上工作。 我认为在Windows上,终止qemu进程是可以的,就像

Taskkill /IM qemu-system-x86_64.exe /F /T
我可以通过以下方式关闭它:

adb shell reboot -p

如果您不想知道
adb-s emulator-5554 emu kill
的设备序列号,那么您可以使用
adb-e emu kill
杀死单个仿真器。如果同时运行多个仿真器,这不会造成任何损失,但对于自动启动和停止单个仿真器进行测试非常有用。

对于MAC:
  • 运行:
  • 这会给你一个更广泛的结果,比如:

     6617 ??         9:05.54 /Users/nav/Library/Android/sdk/emulator/qemu/darwin-x86_64/qemu-system-x86_64 -netdelay none -netspeed full -avd Nexus_One_API_29
     6619 ??         0:06.10 /Users/nav/Library/Android/sdk/emulator/emulator64-crash-service -pipe com.google.AndroidEmulator.CrashService.6617 -ppid 6617 -data-dir /tmp/android-nav/
     6658 ??         0:07.93 /Users/nav/Library/Android/sdk/emulator/lib64/qt/libexec/QtWebEngineProcess --type=renderer --disable-accelerated-video-decode --disable-gpu-memory-buffer-video-frames --disable-pepper-3d-image-chromium --enable-threaded-compositing --file-url-path-alias=/gen=/Users/nav/Library/Android/sdk/emulator/lib64/qt/libexec/gen --enable-features=AllowContentInitiatedDataUrlNavigations --disable-features=MacV2Sandbox,MojoVideoCapture,SurfaceSynchronization,UseVideoCaptureApiForDevToolsSnapshots --disable-gpu-compositing --service-pipe-token=15570406721898250245 --lang=en-US --webengine-schemes=qrc:sLV --num-raster-threads=4 --enable-main-frame-before-activation --service-request-channel-token=15570406721898250245 --renderer-client-id=2
     6659 ??         0:01.11 /Users/nav/Library/Android/sdk/emulator/lib64/qt/libexec/QtWebEngineProcess --type=renderer --disable-accelerated-video-decode --disable-gpu-memory-buffer-video-frames --disable-pepper-3d-image-chromium --enable-threaded-compositing --file-url-path-alias=/gen=/Users/nav/Library/Android/sdk/emulator/lib64/qt/libexec/gen --enable-features=AllowContentInitiatedDataUrlNavigations --disable-features=MacV2Sandbox,MojoVideoCapture,SurfaceSynchronization,UseVideoCaptureApiForDevToolsSnapshots --disable-gpu-compositing --service-pipe-token=--lang=en-US --webengine-schemes=qrc:sLV --num-raster-threads=4 --enable-main-frame-before-activation --service-request-channel-token=  --renderer-client-id=3
    10030 ttys000    0:00.00 grep emulator
    
  • 第一(左)列是您要查找的进程ID(PID)

  • 找到第一个PID(在上面的示例中,它是6617)

  • 强制终止该进程:

  • 在我的情况下,命令是:

    kill -9 6617
    
  • 通常,杀死第一个进程足以停止仿真器,但如果这不起作用,也可以尝试杀死其他进程
  • 如果

    不起作用。使用:

     adb emu kill
    
    这将杀死所有模拟器

    如果存在多个模拟器,则使用:

    adb -s * emu kill
    

    adb kill服务器停止adb,但不停止仿真器进程。emu kill语句总是返回emulator not foundemulator not found?千万别相信。如果您启动emulator,您就拥有emulator。没有?尝试kil其他端口的仿真器。端口数包含在上面的链接中。目前使用最新可用SDK在osx上工作
    adb-s emulator-5554 emu kill
    不会关闭仿真器,但命令不会终止并永远阻塞:/,您可以使用
    adb设备
    找到仿真器名称。但是在需要通过控制面板>程序和功能>打开或关闭Windows功能>激活Telnet功能之前,Telnet客户端
    kill
    似乎不是运行安卓9的仿真器中的命令,可能更早的toothis最终对我起作用,也许在给上面的另一个命令打电话之后!我认为我们无法通过“reboot”命令重新启动android emulator您使用的是哪个版本?不会为我关闭或重新启动任何模拟器。adb kill server会关闭服务器,不会关闭模拟器。它在没有连接usb电缆的情况下为我工作。谢谢
    Taskkill
    命令对我有效。谢谢令人难以置信的是,我们仍然要处理这样的事情。我尝试了所有的解决方案,唯一一个对我有效的
    kill -9 6617
    
     adb kill-server 
    
     adb emu kill
    
    adb -s * emu kill