Android 模拟器在使用"-no-window"标志时永远不会完成启动



我的目标是以" -no-window"模式运行Android模拟器,因为我想在没有附加的监视器/图形卡的远程计算机上运行它。我已经挣扎了几天,没有成功。

首先,让我描述什么有效。然后,我将描述什么不是什么,这实际上是我想要实现的。

什么在工作

我可以在远程计算机上运行仿真器,而无需" - 窗口"标志。远程机器是安装Ubuntu的裸金属机(不是虚拟机)。模拟器运行时,我可以在本地显示屏上"看到"它。这是我所做的:

  1. i带有" -y"标志进入远程计算机,以便在我的本地计算机上出现渲染:
ssh -Y username@my-remote-machine
  1. 当通过SSH连接到远程计算机时,我将使用此命令执行模拟器:
$ uname -a 
Linux cell1 4.13.0-16-generic #19-Ubuntu SMP Wed Oct 11 18:35:14 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
cd ~/Android/Sdk/emulator
./emulator  -show-kernel -no-boot-anim -netdelay none -netspeed full -no-snapshot-load -avd Nexus_5X_API_22_64bit
  1. 我等了一点,仿真器将在一分钟内出现在我的客户端计算机上。

  2. 我稍微探索了一个UI,然后在控制台中按下Ctrl-C优雅地停止模拟器。事情按预期工作,我在控制台中看到以下内容:

[  123.257075] healthd: battery l=100 v=0 t=0.0 h=2 st=2 chg=a
^C
emulator: Saving state on exit with session uptime 132314 ms

什么不起作用

  1. 我以相同的方式连接到远程计算机。

  2. 然后,我试图用" -no -window"标志运行模拟器,因为 - 最终 - 我想从Cronjob内部运行仿真器,并且不会显示它以显示它。/p>

./emulator  -show-kernel -no-boot-anim -netdelay none -netspeed full
-no-snapshot-load -avd Nexus_5X_API_22_64bit  -no-window
  1. 我等待了3分钟,希望它能完成启动。但是我的希望是失望的。我怎么知道启动没有完成?我了解到,当我按下Ctrl-C并在控制台中看到以下内容时:
shell@generic_x86_64:/ $
^C
emulator: WARNING: Skipping state saving as emulator not finished booting.

我的问题是:有人知道为什么模拟器没有用" -no-window"标志完成启动?如何在没有显示器的情况下在远程机器(裸金属机)上运行仿真器?值得赞赏的任何建议/帮助。

非常感谢!

我刚刚遇到了同一问题。我成功地用-no-window启动了一次,但是在将模拟器与窗口使用窗口的情况下,所有后续尝试都失败了。

从我发现的东西来看,似乎可能与持续存在的状态有关(即使使用-no-window启动也可以检测到配置更改,因此应该重置状态))。

如果我使用emulator -no-window -wipe-data -avd TEST_1234启动(即擦拭以前的状态),它将每次成功完成启动过程。

随后使用-no-window没有-wipe-data的启动似乎也有效:

$ emulator -no-window -avd TEST_1234           
^Cemulator: Saving state on exit with session uptime 30735 ms

如果您需要在使用UI和使用无头配置之间切换,那么这不是一个理想的解决方案,但是如果您(像我一样)只是切换到UI以视觉上验证某些内容,并打算在生产中使用adb来管理所有内容,这应该解决问题。

我有一段时间存在相同的问题。尝试将这些参数添加到模拟器启动:

-qemu -enable-kvm -snapshot

花了我一整天的时间才能理解这是一个简单的图像问题。从Google API版本切换到默认版本已解决了我的问题。

希望它有帮助

最新更新