Firebase Crash在启动时导致ANR

21

最近我收到了反馈,而且我能够在我的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'

2
具有讽刺意味。添加崩溃依赖项导致崩溃。 - OneCricketeer
1
我们刚刚遇到了使用谷歌Play服务版本“9.6.80”的设备出现的这个问题。请检查您的设备是否运行相同的版本。我们不得不更新我们所有的应用程序(许多用户),并删除崩溃报告。 - xcvr
1
没错,我也有 GPS 9.6.80。 - Szymon Klimaszewski
呃,这很像是一个回归问题。我们明天会花更多时间来解决它。感谢您的帖子! - xcvr
1
Firebaser在此 感谢您的报告。我们正在调查可能导致这种回归的原因。@bonnyz发布了一个解决方法。如果有更新或适当的修复,我会在这里发布。 - Frank van Puffelen
显示剩余2条评论
4个回答

14
问题出现在正在推出的 Google Play Services 9.6.80 中,影响所有使用 Firebase Crash 报告的应用程序(无论其捆绑的版本如何)。暂时解决方案是通过从 build.gradle 中删除以下条目来禁用 Firebase Crash:compile 'com.google.firebase:firebase-crash:9.x.x'。 长期解决方案是等待 Google 发布修复版的 GPS,然后再次启用 Firebase Crash。

更新 09/16:

谷歌正在推出修复版的Google Play服务(9.6.83),该版本解决了Firebase Crash的问题。


你们会发布热修补吗?如果不是,那么预计的发布日期是什么? - Szymon Klimaszewski
1
@SzymonKlimaszewski,9.6.80版本中的问题已经被确认,并将在9.6.83版本中修复。我们会随时向您更新。 - Doug Stevenson
1
状态可以在此处跟踪:https://status.firebase.google.com/incident/Crash%20Reporting%20%28Beta%29/16003 - Doug Stevenson
这个问题什么时候能解决?我知道 Firebase Crash 还在测试阶段,但这太糟糕了。 - clocksmith
再次遇到v11.0.2的相同问题。:( - Kamran Ahmed
显示剩余8条评论

1

禁用 Firebase Analytics 崩溃报告,请在 app.gradle 文件中使用以下代码。希望这能帮到你。

configurations {

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

}


0

9.6.83仍然会导致不同的ANR崩溃

我们的应用程序在推送到Play Store Beta并安装在设备上后,在首次启动时会崩溃。随后它可以正常工作,但是我们不能在不了解问题的情况下推向生产环境。

以下是ANR崩溃报告

java.lang.RuntimeException: Unable to instantiate receiver com.google.android.gms.analytics.CampaignTrackingReceiver: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.analytics.CampaignTrackingReceiver"

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


很奇怪。当你禁用Mibification时,它是否能正常工作?也许他们忘记更新Proguard配置文件了,或者你的配置文件有问题。 - Szymon Klimaszewski
已禁用Proguard。同样地,是的。 - Harish Bharadwaj

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 后,应用程序按预期工作)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接