Android MessagingAnalytics 中的 Firebase 崩溃

Android Firebase Crash in MessagingAnalytics

异常

我们在 Google Play 中看到很多与 Firebase 相关的崩溃。

异常发生在两种方法中:

堆栈跟踪示例:

at com.google.firebase.FirebaseApp.getInstance(com.google.firebase:firebase-common@@16.0.1:219)
  at com.google.firebase.messaging.MessagingAnalytics.zza (Unknown Source)
  at com.google.firebase.messaging.MessagingAnalytics.logNotificationReceived (Unknown Source)
  at com.google.firebase.messaging.FirebaseMessagingService.zzd (Unknown Source)
  at com.google.firebase.iid.zzc.run (Unknown Source)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:607)
  at com.google.android.gms.common.util.concurrent.zza.run (Unknown Source)
  at java.lang.Thread.run (Thread.java:762)

调查

我们调查了一下,找到了原因:

Google支持

我们已将此问题通知 Firebase 团队,并花了一周的时间与支持人员交谈。然而,他们告诉我们,在我们发送重现崩溃的构建之前,他们甚至不会考虑这个问题。我们对问题是特定于设备的解释没有帮助。

问题

我们可以做些什么来防止 com.google.firebase.messaging.MessagingAnalytics 使我们的应用程序崩溃?

我们已成功解决问题。

  1. 提取 AAR com.google.firebase.firebase-消息传递-X.X.X.aar
  2. 摘录classes.jar
  3. 反编译 MessagingAnalytics class
  4. 将 try catch 添加到 logNotificationDismisslogNotificationReceived
  5. 重新编译 MessagingAnalytics
  6. 打包到classes.jar返回
  7. 打包回 AAR
  8. 替换项目中的 AAR