运行 Android 禁用主机 GPU 的 5.0.1 x86 虚拟设备

Running Android 5.0.1 x86 virtual device with host GPU disabled

我正在为我的一个应用程序自动捕获屏幕截图。

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

我的工作流程按预期工作,但我遇到屏幕截图捕获问题。实际上,在模拟器上使用 UiDevice.takeScreenshot(File storePath)screencap 总是会创建一个空文件。

似乎 a known issue 启用了 AVD 运行 主机 GPU(这是我的情况)。建议的解决方法是在禁用主机 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。

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

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