MessagingAnalytics中的Android Firebase崩溃

时间:2018-09-04 14:58:36

标签: android firebase crash firebase-cloud-messaging

异常

我们在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)

调查

我们进行了调查,发现了原因:

  • Firebase初始化自身时会发生异常。
  • 当设备的Google Play服务版本过旧时,可能会发生这种情况。
  • 我们通过将所有Firebase调用包装为try / catch块,从而设法在应用代码中解决了此问题。
  • 但是,这对logNotificationDismisslogNotificationReceived没有帮助,因为我们无法控制此代码。

Google支持

我们已将此问题通知了Firebase团队,并花了一周的时间与支持人员进行了交谈。但是,他们告诉我们,直到我们将发送复制崩溃的生成文件之前,他们甚至都不会关注这个问题。我们对这个问题仅针对设备的解释没有帮助。

问题

我们如何防止com.google.firebase.messaging.MessagingAnalytics导致应用程序崩溃?

1 个答案:

答案 0 :(得分:0)

我们设法解决了这个问题。

  1. 提取AAR com.google.firebase.firebase-messaging-X.X.X.aar
  2. 提取classes.jar
  3. 反编译MessagingAnalytics类
  4. 将尝试捕获添加到 logNotificationDismiss logNotificationReceived
  5. 重新编译MessagingAnalytics
  6. 打包到classes.jar返回
  7. 打包回AAR
  8. 在项目中替换AAR