Android MessagingAnalytics 中的 Firebase 崩溃
Android Firebase Crash in MessagingAnalytics
异常
我们在 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 块中,设法解决了应用代码中的这个问题。
- 但是,这对
logNotificationDismiss
和 logNotificationReceived
没有帮助,因为我们无法控制此代码。
Google支持
我们已将此问题通知 Firebase 团队,并花了一周的时间与支持人员交谈。然而,他们告诉我们,在我们发送重现崩溃的构建之前,他们甚至不会考虑这个问题。我们对问题是特定于设备的解释没有帮助。
问题
我们可以做些什么来防止 com.google.firebase.messaging.MessagingAnalytics
使我们的应用程序崩溃?
我们已成功解决问题。
- 提取 AAR com.google.firebase.firebase-消息传递-X.X.X.aar
- 摘录classes.jar
- 反编译 MessagingAnalytics class
- 将 try catch 添加到 logNotificationDismiss 和 logNotificationReceived
- 重新编译 MessagingAnalytics
- 打包到classes.jar返回
- 打包回 AAR
- 替换项目中的 AAR
异常
我们在 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 块中,设法解决了应用代码中的这个问题。
- 但是,这对
logNotificationDismiss
和logNotificationReceived
没有帮助,因为我们无法控制此代码。
Google支持
我们已将此问题通知 Firebase 团队,并花了一周的时间与支持人员交谈。然而,他们告诉我们,在我们发送重现崩溃的构建之前,他们甚至不会考虑这个问题。我们对问题是特定于设备的解释没有帮助。
问题
我们可以做些什么来防止 com.google.firebase.messaging.MessagingAnalytics
使我们的应用程序崩溃?
我们已成功解决问题。
- 提取 AAR com.google.firebase.firebase-消息传递-X.X.X.aar
- 摘录classes.jar
- 反编译 MessagingAnalytics class
- 将 try catch 添加到 logNotificationDismiss 和 logNotificationReceived
- 重新编译 MessagingAnalytics
- 打包到classes.jar返回
- 打包回 AAR
- 替换项目中的 AAR