在无头模式下运行Genymotion 2.8

时间:2016-09-12 07:45:55

标签: android genymotion

我正在尝试从命令行运行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版本。

对此的任何帮助都将非常感激。

2 个答案:

答案 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