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