我正致力于为我的某个应用自动截屏截图。
由于我想捕获根据系统区域设置而有所不同的一些活动和小部件的屏幕截图,因此我为每种所需语言启动一个新的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 &
我正在使用Nvidia GPU运行Fedora 21。
是否有人成功启动了具有禁用主机GPU的最新系统映像的Android虚拟设备?欢迎任何帮助或建议。