在Firebase testLab中运行Screenshotter时出现错误

问题描述

我正在尝试在上传到firebase testlab的Android捆绑软件上运行Espresso测试。我还包括了Firebase屏幕截图库。我在Firebase测试实验室中遇到以下错误

09-18 05:22:13.937:E / cloud_screenshotter(18993):采取例外的屏幕截图:java.io.FileNotFoundException:/sdcard/screenshots/com.augustinus.fcmtest.LoggedInTests-haveVideoCallScreen-CallNotification-1.jpg:打开失败:ENOENT(没有这样的文件或目录)

我已经具有存储权限,并且显示在日志开头:

09-18 02:51:37.784: I/GrantPermissionCallable(18946): Permission: android.permission.READ_EXTERNAL_STORAGE is already granted!
09-18 02:51:37.785: I/GrantPermissionCallable(18946): Permission: android.permission.WRITE_EXTERNAL_STORAGE is already granted!
09-18 02:51:37.785: I/GrantPermissionCallable(18946): Permission: android.permission.READ_EXTERNAL_STORAGE is already granted!

使用的设备是物理设备。 Pixel 4,API级别29

更新: 经过重新测试,可以确认问题在Api级别29上存在,但在Api级别28上却不存在。在APi级别29(Android 10)上,访问存储的工作方式已有一些更改。访问共享媒体文件夹是不同的。很可能Firebase ScreenShotter尚未更新以适应API级别29。

解决方法

理想情况下,Google Firebase需要扩展其ScreenShotter库才能使用API​​级别29。作为短期解决方案,您可以在AndroidManifest.xml中添加以下内容

 <application
      android:requestLegacyExternalStorage="true"