【问题标题】:Firebase Crash produces ANR during launchFirebase 崩溃在启动期间产生 ANR
【发布时间】:2016-09-13 23:07:49
【问题描述】:

最近我收到了反馈,而且我能够在我的 Nexus 5 上轻松重现它,并清除应用数据。 简单地说,当仅将 compile 'com.google.firebase:firebase-crash:9.4.0' 添加到项目依赖项时,我得到以下异常:

09-14 00:47:54.899 3129-3129/com.szyk.myheart E/FirebaseCrash: Failed to initialize crash reporting
                                                           java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Iterator java.util.List.iterator()' on a null object reference
                                                               at bol.<init>(:com.google.android.gms.DynamiteModulesC:3201)
                                                               at com.google.firebase.crash.internal.api.FirebaseCrashApiImpl.init(:com.google.android.gms.DynamiteModulesC:67)
                                                               at bnu.onTransact(:com.google.android.gms.DynamiteModulesC:60)
                                                               at android.os.Binder.transact(Binder.java:387)
                                                               at com.google.firebase.crash.internal.zzd$zza$zza.zza(Unknown Source)
                                                               at com.google.firebase.crash.FirebaseCrash.<init>(Unknown Source)
                                                               at com.google.firebase.crash.FirebaseCrash.getInstance(Unknown Source)
                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                               at com.google.firebase.FirebaseApp.zza(Unknown Source)
                                                               at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
                                                               at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
                                                               at com.google.firebase.FirebaseApp.zzek(Unknown Source)
                                                               at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
                                                               at android.content.ContentProvider.attachInfo(ContentProvider.java:1748)
                                                               at android.content.ContentProvider.attachInfo(ContentProvider.java:1723)
                                                               at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
                                                               at android.app.ActivityThread.installProvider(ActivityThread.java:5153)
                                                               at android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)
                                                               at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)
                                                               at android.app.ActivityThread.-wrap1(ActivityThread.java)
                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
                                                               at android.os.Handler.dispatchMessage(Handler.java:102)
                                                               at android.os.Looper.loop(Looper.java:148)
                                                               at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

这个问题更奇怪,因为一旦它会产生 ANR 并崩溃,那么它在下次启动时会起作用。

我的依赖:

compile 'com.google.firebase:firebase-core:9.4.0'
//not working  compile 'com.google.firebase:firebase-crash:9.4.0'
compile 'com.google.firebase:firebase-invites:9.4.0'
compile 'com.google.firebase:firebase-ads:9.4.0'

compile 'com.google.android.gms:play-services-auth:9.4.0'
compile 'com.google.android.gms:play-services-plus:9.4.0'
compile 'com.google.android.gms:play-services-drive:9.4.0'

【问题讨论】:

  • 讽刺。添加崩溃依赖会导致崩溃
  • 我们刚刚在运行 google play 服务 9.6.80 版本的设备上遇到了这个问题。请检查您的设备是否运行相同的版本。我们必须更新所有应用(用户负载),并删除崩溃报告。
  • 没错,我也有 GPS 9.6.80
  • 呃。它闻起来很像回归。明天我们会花更多的时间在这上面。感谢这篇文章!
  • firebaser here 感谢您的报告。我们正在调查可能导致这种回归的原因。 @bonnyz 发布了一个解决方法。当有更新或适当的修复时,我会在这里发布。

标签: android firebase firebase-crash-reporting


【解决方案1】:

该问题已在 Google Play 服务 9.6.80(目前正在推出)中引入,并影响使用 Firebase 崩溃报告的所有应用(尽管版本不同)捆绑在您的应用中)。

  • 临时解决方案:通过从 build.gradle 中删除以下条目来禁用 Firebase 崩溃

    编译 'com.google.firebase:firebase-crash:9.x.x'

  • 长期解决方案:等待 Google 发布 GPS 的固定版本,然后再次启用 Firebase Crash


更新 09/16:

Google 正在推出解决 Firebase 崩溃问题的固定版本的 Google Play 服务 (9.6.83)。

【讨论】:

  • 我认为我们无能为力了。
  • firebaser here 感谢您的报告。我们正在调查可能导致这种回归的原因。 @bonnyz 的回答是一个有效的解决方法。当有更新或适当的修复时,我会在这里发布。更新(太平洋时间 2016 年 9 月 14 日下午 12:54):我们已经确定了问题的原因并正在努力修复。解决方法仍然有效。
  • 你会把它作为修补程序发布吗?如果不是,那么预计发布日期是什么时候?
  • @SzymonKlimaszewski 9.6.80 中的问题已确定,将在 9.6.83 中修复。会及时通知您。
  • 可以在这里追踪状态:status.firebase.google.com/incident/…
【解决方案2】:

禁用 Firebase Analytics 崩溃报告,在 app.gradle 文件中使用以下代码。希望这会对您有所帮助

配置{

  all*.exclude group: 'com.google.firebase', module: 'firebase-crash'

}

【讨论】:

    【解决方案3】:

    9.6.83 仍然给出不同的 anr 崩溃 我们的应用程序在推送到 Play Store Beta 时以及在设备上安装时在首次启动时崩溃。随后它起作用了,但我们不能在不了解问题的情况下推动。

    这是 ANR 崩溃报告

    java.lang.RuntimeException:无法实例化接收器 com.google.android.gms.analytics.CampaignTrackingReceiver:java.lang.ClassNotFoundException:找不到类“com.google.android.gms.analytics.CampaignTrackingReceiver”

    编辑:我们必须明确添加 compile 'com.google.android.gms:play-services-analytics:9.4.0' 并且第一次启动 anr 得到了解决。但我不确定这是否是解决方法,因为我们根本不使用该库。也许 Playstore 已将他们的错误修复到所有 apk?

    【讨论】:

    • 这很奇怪。当你禁用 mibification 时它会起作用吗?也许他们忘记更新 Proguard 配置,或者你的有问题。
    • 是的。也禁用了proguard。
    【解决方案4】:

    仅作记录:

    我们解决了 DynamiteModulesC NPEUncaught exception in Firebase runloop (3.0.0) 通过删除以下行

    //remove this "feature" if you should use it
    FirebaseApp.setAutomaticResourceManagmentEnabled(true)
    

    API 说明:

    如果设置为 true,则表明 Firebase 应关闭数据库 当应用程序在后台时自动连接。已禁用 默认情况下。

    (可能是我们错过了一些正确使用此功能的配置,但在未启用 ResourceManagment 后 App 可以正常工作)

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 2018-04-12
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多