1

有谁知道为什么 Google Pixel 5 和 Google Pixel 5e (API 30) 在查看由 Firebase 测试实验室中的 Automatic Robo Script 生成的其他正常应用内屏幕截图时,可能会有一个纯黑色覆盖层完全遮挡屏幕的最右侧 60% ?

我们在测试这个应用程序时没有遇到此类显示问题,该应用程序是在 Unity 2017 中构建并导出到 Android Studio,然后在其他 20 台设备上作为 .aab 构建上传到 Firebase 测试实验室,其中一些设备在 Firebase 测试实验室中正确显示,包括其他像素。

在 Android Studio Pixel 2、Pixel 4 和 Pixel XL 模拟器中专门测试 API 30 时,我们也没有出现显示问题。

不确定机器人卡住是否是 Pixel 5 的功能,而真正的用户会知道滑开屏幕或其他东西。任何没有购买 Pixel 5 进行调试的帮助将不胜感激。

由探索应用程序的 firebase robo 脚本生成的图像

- - - - - - - 更新: - - - - - - - - -

我一直在使用我在 Pixel 5 上的 5 次每日 Robo 测试来尝试调试这个问题,我想我要解决的第一件事是 Play Console 的发布前报告中显示的一些构建警告(但不是在 Android Studio 或在 Firebase 的测试结果中)类型为“不支持的 API”:

StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionAction(III)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;
    at android.os.StrictMode.lambda$static$1(StrictMode.java:428)
    at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
    at java.lang.Class.getDeclaredMethodInternal(Native Method)
    at java.lang.Class.getPublicMethodRecursive(Class.java:2075)
    at java.lang.Class.getMethod(Class.java:2063)
    at java.lang.Class.getMethod(Class.java:1690)
    at cEa.a(PG:9)
    at cEi.a(PG:12)
    at org.chromium.content.browser.selection.SmartSelectionClient.<init>(PG:5)
    at cEQ.a(Unknown Source:7)
    at org.chromium.android_webview.AwContents.e(PG:245)
    at org.chromium.android_webview.AwContents.d(PG:210)
    at org.chromium.android_webview.AwContents.<init>(PG:77)
    at to.run(PG:15)
    at aJK.a(PG:13)
    at aJL.run(Unknown Source:2)
    at org.chromium.base.task.PostTask.b(PG:16)
    at aJK.a(PG:7)
    at com.android.webview.chromium.WebViewChromiumFactoryProvider.b(PG:6)
    at com.android.webview.chromium.WebViewChromium.init(PG:105)
    at android.webkit.WebView.<init>(WebView.java:422)
    at android.webkit.WebView.<init>(WebView.java:348)
    at android.webkit.WebView.<init>(WebView.java:331)
    at android.webkit.WebView.<init>(WebView.java:318)
    at android.webkit.WebView.<init>(WebView.java:308)
    at com.google.android.gms.ads.internal.webview.ac.<init>(:com.google.android.gms.policy_ads_fdr_dynamite@204204100@204204100057.336078696.336078696:1)
    at com.google.android.gms.ads.internal.webview.s.a(Unknown Source:0)
    at com.google.android.gms.ads.internal.util.bi.b(:com.google.android.gms.policy_ads_fdr_dynamite@204204100@204204100057.336078696.336078696:3)
    at com.google.android.gms.ads.internal.webview.v.a(:com.google.android.gms.policy_ads_fdr_dynamite@204204100@204204100057.336078696.336078696:2)
    at com.google.android.gms.ads.internal.js.l.<init>(:com.google.android.gms.policy_ads_fdr_dynamite@204204100@204204100057.336078696.336078696:4)
    at com.google.android.gms.ads.internal.js.n.run(Unknown Source:0)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at qd.a(:com.google.android.gms.policy_ads_fdr_dynamite@204204100@204204100057.336078696.336078696:0)
    at com.google.android.gms.ads.internal.util.f.a(:com.google.android.gms.policy_ads_fdr_dynamite@204204100@204204100057.336078696.336078696:1)
    at qd.dispatchMessage(:com.google.android.gms.policy_ads_fdr_dynamite@204204100@204204100057.336078696.336078696:0)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6718)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

我们使用的一个 SDK 是适用于 Unity 的 Google Mobile Ads(版本 5.4.0),它在 Android Studio 的项目模块之外有自己的 build.gradle 文件,其默认设置(通过 Unity 2017 导出时不支持API 30) 如下:

    buildToolsVersion '29.0.2'
    targetSdkVersion 19

在黑屏状态的实例中,我根据 Android Studio 的建议(targetSdkVersion 19 显示为红色)将这些更新为:

    buildToolsVersion '31.0.0-rc3'
    targetSdkVersion 30

将这些设置回明显损坏的 Unity 默认值并重新上传到 Robo Test 后,它就起作用了!Pixel 5 显示全屏。我有一种感觉正在发生其他事情,但是在反转过程时会恢复黑屏,第二次将其向前推动并没有解决它。我现在已经完成了日常测试。

4

1 回答 1

0

Google 在其发布前报告中用于帮助开发人员突出显示特定于设备的 UI 问题的软件本身是不稳定的,并且与控制台中的建议相反,不应将其用于 Unity3D 项目,尽管事实上 Unity 项目构成大多数游戏上传到 Google Play。

感谢 Mindful QA 人员的善意和慈善帮助,我们已经能够在包括 Pixel 5 在内的许多物理设备上对此进行测试,并且可以确认黑色矩形问题是 Google 的 Firebase 测试实验室独有的,这是Google Play 中的 Pre-Launch-Report 屏幕背后的引擎,它是运行 API 30 的物理设备,并且它们无法在所有 Unity3D 项目中绘制连贯的屏幕。

即使是完全空的 Unity3D 项目,我们也能始终如一地重现这一点。我们还通过在导出到 Android Studio 之前在 Unity 2017 中构建的 Unity3D 项目以及完全在最新版本的 Unity (2021.1.6f1) 中构建的 Unity3D 项目复制了这一点。

我已尽力通过 Google 群组页面的推荐流程向 Firebase 团队报告此问题,但 3 周后我没有收到回复。Google Play 开发者支持现已调查此问题,但无法确认该错误,也无法将其记录到相应的团队进行修复,所以我想它会持续一段时间。在那之前,希望这可以帮助那些浪费了数周时间试图理解为什么上传到 Google Play 的应用程序中有一个黑色矩形的开发人员,他们遵循了在 Play 控制台中突出显示 UI 问题的推荐流程。

使用 Empty Unity3D 项目重现此内容的步骤如下:

  1. 下载 Unity 2021.1.6f1 并在硬盘上为该项目创建一个新文件夹。
  2. 在 Unity Hub 中确保 Unity 2021 支持 Android 构建并为 SDK、NDK 和 JDK 添加了模块: Unity Hub 设置
  3. 在 Unity -> Edit -> Preferences 中,确保 SDK、JDK 和 NDK 的 External Tools 都设置为“Install With Unity(推荐)” Unity external Path config
  4. 在 Unity 文件 -> 构建设置 -> 播放器设置 -> 其他设置中,确保目标 SDK 设置为自动(最高安装)并且 Android 11 出现在列表中:播放器设置
  5. 将项目构建为 .apk。
  6. 转到https://console.firebase.google.com并选择一个现有项目或创建一个新项目。
  7. 在继续上传 .apk 之前,从左侧面板中选择测试实验室并选择运行测试。
  8. 选择自定义并使用过滤器查找运行 API 30 的任何物理设备,在撰写本文时,这可能是设置为使用 API 30 的 Pixel 5e 或 Pixel 4。方向可以是纵向或横向。
  9. 选择确认,然后开始 1 次测试。这大约需要 5 分钟。
  10. 测试完成后选择测试,然后按 ScreenShots 并观察黑色矩形Empty Project Black Rectangle

这在任何运行 API 29 或更低版本的设备上都不会发生,我们测试过的设备总共包括:

Firebase 成功(无黑色矩形):LG H932 (API 26) Nexus 5 (API 23) MHA-L29 (API 24) H8216 (API 28) Pixel 2 (API 27) Pixel (API 26) ONEPLUS A5010 (API 28) SM -G955F (API 26) Galaxy S9 (API 26) Pixel 3 (API 28) 红米手机 6A (API 27) 诺基亚 1 (API 27)

Firebase 失败(黑色矩形):Pixel 4 (API 30) Pixel 5e (API 30) Pixel 5 (API 30)

API 30 设备在大约 19/20 次测试中始终失败。显然,每天有 5 次免费测试,开发人员需要很长时间才能收集这些数据,所以我希望它对尝试修复此错误或了解为什么他们自己的项目在将其上传到 Google Play 时出现黑色矩形的人有所帮助.

于 2021-05-25T08:03:29.837 回答