Exception
我们在Google Play中看到了很多与Firebase相关的崩溃。
异常发生在两种方法中:
- com.google.firebase.messaging.MessagingAnalytics.logNotificationDisshort
- 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调用包装为尝试/捕获阻止。
- 但是,这对
logNotificationDismiss
和logNotificationReceived
没有帮助,因为我们无法控制此代码。
谷歌支持
我们已将此问题通知了 Firebase 团队,并花了一周时间与支持人员交谈。但是,他们告诉我们,在我们发送重现崩溃的版本之前,他们甚至不会关注这个问题。我们关于该问题特定于设备的解释没有帮助。
问题
我们可以做些什么来防止com.google.firebase.messaging.MessagingAnalytics
使我们的应用程序崩溃?
我们已经设法解决了这个问题。
- 提取AAR com.google.firebase.firebase-messaging-X.X.X.aar
- 提取类.jar
- 反编译消息分析类
- 将尝试捕获添加到日志通知解除和日志通知已收到
- 编译消息传递分析
- 打包上课.jar返回
- 打包到AAR背面
- 替换项目中的 AAR