我正在尝试从命令行运行Genymotion 2.8模拟器,而根本不显示任何UI。
我正在执行以下说明:
VBoxManage guestproperty set <vm-name> hardware_opengl 0
VBoxManage startvm <vm-name> --type headless
VM启动,我可以使用adb
连接到它,但后来我收到了一堆错误:
E/EGL_emulation: Failed to establish connection with the host
W/libEGL: eglInitialize(0xf708e040) failed (EGL_SUCCESS)
E/gralloc_vbox86: gralloc: Failed to get host connection
E/SurfaceFlinger: hwcomposer module not found
E/SurfaceFlinger: ERROR: failed to open framebuffer (I/O error), aborting
我能够使用之前的Genymotion版本。
对此的任何帮助都将非常感激。
答案 0 :(得分:3)
<强> TL; DR 强>
Genymotion虚拟设备不支持无头模式。它不能简单地从vbox启动。
以下是this previous answer的解释:
当您从Genymotion Soft以标准方式启动Genymotion设备时,Android操作系统将在VirtualBox VM内启动,但所有UI处理(使用OpenGL)都在VM外部完成,以使渲染管道使用您的计算机&# 39; GPU使用这种硬件加速使Genymotion设备相当平滑和快速。
当您直接从VirtualBox启动Genymotion VM时,操作系统将启动,但渲染不会是硬件加速。从2.3到4.2有一个后备解决方案:渲染将由CPU从VM内部计算。从4.3开始,软渲染不是一个好的解决方案,因为它会使操作系统过于缓慢而无法接受,这就是我们禁用它并且无法启用它的原因。
答案 1 :(得分:1)
使用Linux,您可以使用Xvfb模拟图形界面。
这是一个为给定VM自动执行此任务的脚本:
#!/bin/bash
if [ $# == 0 ]; then
echo "You must provide a vm uid"
echo "You can list vm uid with VBomaxManage list vms"
ids=$(VBoxManage list vms)
if [ $? == 0 ]; then
echo "Available VM:"
echo "$ids"
fi
exit 1
fi
SCREEN=3
Xvfb :$SCREEN -nolisten tcp -screen :$SCREEN 1280x800x24 &
xvfb="$!"
DISPLAY=:3 genymotion-player --vm-name $1
kill -9 $xvfb