2015-02-06 32 views
1

我正在为自己的一个应用程序自动执行截图捕获。运行Android 5.0.1 x86虚拟设备,禁用主机GPU

由于我想捕获根据系统区域设置不同的一些活动和小部件的屏幕截图,因此我为每种所需语言启动了一个新的Android虚拟设备(模拟器),并设置了正确的系统区域设置属性。然后,使用uiautomator模拟特定的用户交互。

我的工作流程按预期工作,但我有截图捕获问题。的确,在仿真器上使用UiDevice.takeScreenshot(File storePath)screencap总是会创建一个空文件。

它似乎是a known issue与启用主机GPU(这是我的情况)运行的AVD。建议的解决方法是在禁用主机GPU的情况下启动模拟器。不幸的是,当我启动禁用主机GPU的虚拟设备时,模拟屏幕保持黑屏。

我看了一下模拟器的输出,其中-verbose选项和abd -e logcat命令(emulator output,logcat output)。在logcat的输出中我已经确定了以下错误,但我无法弄清楚它的原因:

E/SurfaceFlinger( 929): hwcomposer module not found 
E/SurfaceFlinger( 929): ERROR: failed to open framebuffer (No such file or directory), aborting 

下面是我用它来启动模拟器命令:

LD_LIBRARY_PATH=$ANDROID_HOME/tools/lib:$LD_LIBRARY_PATH emulator -avd screenshots -skin nexus_6 \ 
    -skindir $ANDROID_STUDIO_HOME/plugins/android/lib/device-art-resources -no-audio \ 
    -prop persist.sys.language=en -prop persist.sys.country=en -verbose -qemu -m 512 -enable-kvm & 

我运行Fedora 21与Nvidia GPU。

是否有人成功启动了具有禁用主机GPU的最新系统映像的Android虚拟设备?欢迎任何帮助或建议。

回答

0

圣牛!我面临的问题是known issue。解决方法是使用屏幕分辨率较低的皮肤(例如nexus_4)。