Firebase Crash在发布期间产生ANR

最近我得到了反馈,并且我能够在我的Nexus 5上轻松地重现它并清除应用数据。 简单地说,当将‘com.google.firebase:firebase-crash:9.4.0’编译为项目依赖项时,我会得到以下exception:

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.(: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.(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 (目前正在推出)中引入,并会影响使用Firebase崩溃报告的所有应用(尽管您的应用中捆绑了该版本)。

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

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

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


更新09/16:

谷歌推出了固定版本的Google Play服务( 9.6.83 ),解决了Firebase崩溃的问题。

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

配置{

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

}

9.6.83仍然提供不同的崩溃我们的应用程序推送到Play商店Beta时,安装在设备上时,第一次在启动时崩溃。 随后它起作用,但我们不能在没有理解问题的情况下推动它。

这是ANR崩溃报告

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

编辑:我们必须明确添加编译’com.google.android.gms:play-services-analytics:9.4.0’,并且首次启动anr得到解决。 但我不确定是不是因为我们根本不使用这个库。 也许Playstore修复了他们的bug到所有apks?

仅供记录:

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

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

API说明:

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

(可能是,我们错过了一些正确使用此function的配置,但是在未启用ResourceManagment之后,App正在按预期工作)