Firebase Crash在发布期间产生ANR

时间:2016-09-13 23:07:49

标签: android firebase firebase-crash-reporting

最近我得到了反馈,并且我能够在我的Nexus 5上轻松地重现它并清除应用数据。 简单地说,当将编译'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'

4 个答案:

答案 0 :(得分:14)

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

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

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

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

更新09/16:

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

答案 1 :(得分:1)

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

配置{

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

}

答案 2 :(得分:0)

9.6.83仍然会造成不同的崩溃 推送到Play商店Beta版时我们的应用程序以及安装在设备上的应用程序在启动时首次崩溃。随后它有效,但我们不能在没有理解这个问题的情况下推动它。

这是ANR崩溃报告

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

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

答案 3 :(得分:0)

仅供记录:

我们通过删除后续行解决了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正在按预期工作)