由于缺少方法导致的预启动报告失败(在 com.google.android.apps.mtaas.crawler-1/base.apk 中)

Pre-launch-report failures due to missing methods (in com.google.android.apps.mtaas.crawler-1/base.apk)

最近我的应用程序开始在预发布报告(上传到 Play 商店后自动生成)中包含奇怪的错误消息。

这些报告包含以下例外情况:

Exception java.lang.NoSuchMethodError: No interface method a(Landroid/arch/lifecycle/e;Landroid/arch/lifecycle/b$a;)V in class Landroid/arch/lifecycle/GenericLifecycleObserver; or its super classes (declaration of 'android.arch.lifecycle.GenericLifecycleObserver' appears in /data/app/com.google.android.apps.mtaas.crawler-1/base.apk)
android.arch.lifecycle.f$a.a (f.java:326)
android.arch.lifecycle.f.a (f.java:159)
com.firebase.ui.database.FirebaseRecyclerAdapter.<init> (FirebaseRecyclerAdapter.java:40)

并且:

Exception java.lang.NoSuchMethodError: No static method a(Landroid/app/Activity;)V in class Landroid/arch/lifecycle/ReportFragment; or its super classes (declaration of 'android.arch.lifecycle.ReportFragment' appears in /data/app/com.google.android.apps.mtaas.crawler-1/base.apk)
android.arch.lifecycle.LifecycleDispatcher$DispatcherActivityCallback.onActivityCreated (LifecycleDispatcher.java:77)
android.app.Application.dispatchActivityCreated (Application.java:219)
android.app.Activity.onCreate (Activity.java:1040)
android.support.v4.app.SupportActivity.onCreate (SupportActivity.java:66)
android.support.v4.app.FragmentActivity.onCreate (FragmentActivity.java:285)
android.support.v7.app.AppCompatActivity.onCreate (AppCompatActivity.java:84)

并且:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.arch.core.internal.SafeIterableMap.size()' on a null object reference
    at android.arch.lifecycle.LifecycleRegistry.getObserverCount(LifecycleRegistry.java:204)
    at android.arch.lifecycle.ProcessLifecycleOwner.b(ProcessLifecycleOwner.java:154)
    at android.arch.lifecycle.ProcessLifecycleOwner.a(ProcessLifecycleOwner.java:100)
    at android.arch.lifecycle.LifecycleRuntimeTrojanProvider.onCreate(LifecycleRuntimeTrojanProvider.java:36)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1751)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1726)
    at android.app.ActivityThread.installProvider(ActivityThread.java:6031)
    ... 10 more

奇怪的是,我发布的应用程序在真实设备上似乎 运行 正常(异常仅出现在预启动测试期间)。

我试图恢复自上次构建以来执行的所有(主要)更改,其中我没有预启动问题:从 API 26 回到 API 27,支持的旧版本库,没有 D8 等,但到目前为止没有成功:在执行的 9 个测试中只有 1 或 2 个成功,其余的失败并出现此类错误。

我该怎么做才能解决这个问题?

刚从 Google Play 开发者支持那里得到答案。他们正在调查这个问题。

作为解决方法,您可以通过选择退出新发布的爬虫来返回到以前版本的爬虫。

选择退出的方法如下:

  • 登录您的 Play 管理中心。
  • Select 一个应用程序。
  • Select 发布 管理 > 发布前报告 > 设置。在“发布前报告 版本”部分,将选择退出开关向右移动,直到它变成 蓝色.

此后,启动报告再次正确显示。

PS - 这将禁用 Google Play 完成的默认测试,您可能会错过其他原因造成的任何其他错误。因此,请务必在发布到生产环境之前实施您自己的测试。

Gson 错误是由回归引起的。问题已解决。在一两天内发布修复程序后,它应该会按预期工作。