Firebase SDK在接收广播意图时崩溃

10

在最近的更新中,我们开始看到来自Firebase的两个崩溃。这两个崩溃都无法重现,并且它们很少发生,但发生的频率足以让我们感到担忧。第一个问题99%出现在Android 7上(1%出现在Android 5上):

Fatal Exception: java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x4000010 (has extras) } in com.google.firebase.iid.f@96947cd
       at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1132)
       at android.os.Handler.handleCallback(Handler.java:751)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:154)
       at android.app.ActivityThread.main(ActivityThread.java:6119)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.net.NetworkInfo.isConnected()' on a null object reference
       at com.google.firebase.iid.zzad.zzchp(Unknown Source)
       at com.google.firebase.iid.zzae.onReceive(Unknown Source)
       at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1122)
       at android.os.Handler.handleCallback(Handler.java:751)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:154)
       at android.app.ActivityThread.main(ActivityThread.java:6119)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

而这个独家来自于Android 8:

Fatal Exception: java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x4000010 (has extras) } in com.google.firebase.iid.f@8746d6a
       at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_52497(LoadedApk.java:1323)
       at android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ.$m$7(Unknown Source:4)
       at android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ.run(Unknown Source:39)
       at android.os.Handler.handleCallback(Handler.java:790)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:6494)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.net.NetworkInfo.isConnected()' on a null object reference
       at com.google.firebase.iid.zzad.zzchp(Unknown Source:24)
       at com.google.firebase.iid.zzae.onReceive(Unknown Source:7)
       at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_52497(LoadedApk.java:1313)
       at android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ.$m$7(Unknown Source:4)
       at android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ.run(Unknown Source:39)
       at android.os.Handler.handleCallback(Handler.java:790)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:6494)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

很遗憾,Firebase SDK已被混淆,所以我无法看到崩溃的完整上下文,但被抛出的异常是在一个NetworkInfo对象上尝试执行isConnected方法时发生的NPE。

这是我们在此构建中使用的Firebase库:

api "com.google.firebase:firebase-config:11.6.2"
api "com.firebase:firebase-jobdispatcher:0.8.4"

我们将firebase-config库从11.2.0升级到11.6.2,并在此新版本发布之前添加了jobdispatcher库,这是我们开始看到崩溃的地方。我搜索过但没有看到有关该问题的现有对话,如果有人有见解,我们将非常感激。谢谢!


我也遇到了同样的崩溃。 - Manish
我也是,同样的崩溃报告...:/ - Primoz990
如果有人解决了这个问题,请更新... - Manish
一样的情况。请更新。 - yoavgray
这些是我的应用程序的主要崩溃。在7天内发生了535次崩溃...第一个也出现在Android 4和6上,但仅占1%。对我来说,Android 5有2%。 ----- 我没有firebase-jobdispatcher。所以我猜它来自firebase-config或firebase的基本库。 --- 我真的希望谷歌能够快速修复这个错误。如果他们能在这里发布更新就好了。有人已经向谷歌报告了这个问题吗? - Patrick Boos
所以我在 https://firebase.google.com/support/contact/bugs-features/ 上提交了一个错误报告。如果我收到任何消息,我会在这里发布。在消息中引用此 stackoverflow 帖子,这样也许谷歌的某个人也会在这里写下来。 - Patrick Boos
3个回答

7
我收到了Firebase团队关于我发送的问题报告的官方回复:

没错,您说得对。从Firebase SDK 11.6.0开始,这是当前的一个问题。
我们的工程师正在努力修复这个问题,但目前我无法分享任何细节或时间表。

同时,我建议您使用旧版本的Firebase SDK。

您可以查看我们的发行说明以获取更多更新信息。


2

我也遇到了同样的问题。在 Firebase SDK 11.8.0 中已经修复了。


0

同时查看了发布说明

SDK版本11.8.0 - 2017年12月18日

云消息

  • 修复了由于调用NetworkInfo.isConnected()而导致的内部NullPointerException。

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