MessagingAnalytics中的Android Firebase崩溃

愿君学长松,慎勿作桃李。这篇文章主要讲述MessagingAnalytics中的Android Firebase崩溃相关的知识,希望能为你提供帮助。
Exception我们发现Google Play中有很多与Firebase相关的崩溃事件。
异常发生在两种方法中:

  • com.google.firebase.messaging.MessagingAnalytics.logNotificationDismiss
  • com.google.firebase.messaging.MessagingAnalytics.logNotificationReceived
堆栈跟踪示例:
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)

Investigation我们做了调查,发现原因:
  • Firebase初始化时会发生异常。
  • 当设备具有过时版本的Google Play服务时,可能会发生这种情况。
  • 我们已经设法通过将所有Firebase调用包装到try / catch块来解决应用程序代码中的此问题。
  • 但是,这对logNotificationDismisslogNotificationReceived没有帮助,因为我们无法控制此代码。
Google Support我们已向Firebase小组通知了该问题,并花了一周的时间与支持人员交谈。然而,他们告诉我们,在我们发送再现崩溃的构建之前,他们甚至不会查看问题。我们对该问题是特定于设备的解释没有帮助。
Question【MessagingAnalytics中的Android Firebase崩溃】我们可以做些什么来阻止com.google.firebase.messaging.MessagingAnalytics崩溃我们的应用程序?
答案我们设法解决了这个问题。
  1. 提取AAR com.google.firebase.firebase-messaging-X.X.X.aar
  2. 提取classes.jar
  3. 反编译MessagingAnalytics类
  4. 将try catch添加到logNotificationDismiss和logNotificationReceived
  5. 将Messaging Analytics组合起来
  6. 打包到classes.jar回来
  7. 打包回AAR
  8. 替换项目中的AAR

    推荐阅读