我在使用某些特定应用程序在模拟器中截取屏幕截图时遇到问题:截屏(通过monkeyrunner或adb)如果应用程序未运行(例如在主屏幕上),但在monkeyrunner上崩溃到NullPointerException,或者在通过截屏时返回0大小的文件,则工作正常亚洲开发银行。我已经通过在不同的应用程序运行时截屏来验证行为,因此截取屏幕截图的过程很好。使用不同的渲染器时问题仍然存在,例如:使用-gpu swiftshader_indirect或-gpu guest的行为是相同的,因此它与渲染器无关。此外,我已使用多个不同的AVD配置文件检查了行为,例如Pixel,Pixel 2,Nexus 5X和多个API版本(25,27,28)。在Ubuntu 18.04上使用Android模拟器版本28.0.22.0(build_id 5194135)。
adb shell中没有错误,只有零大小的文件:
generic_x86:/ $ screencap -p /sdcard/screen.png
generic_x86:/ $ ls -la /sdcard/screen.png
-rw-rw---- 1 root sdcard_rw 0 2019-02-18 15:29 /sdcard/screen.png
Monkeyrunner输出如下:https://kajala.com/monkeyrunner-output.txt
有任何想法吗?
阻止屏幕截图/截屏视频 - 至少是in part - 的一件事是FLAG_SECURE
。如果有问题的应用程序使用FLAG_SECURE
,我会期待症状让人联想到你所看到的。