Сбой Android Firebase в MessagingAnalytics - PullRequest
       7

Сбой Android Firebase в MessagingAnalytics

0 голосов
/ 04 сентября 2018

Исключение

Мы видим много сбоев в 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 Services.
  • Нам удалось решить эту проблему в коде приложения, поместив все вызовы Firebase в блок try / catch.
  • Однако это не поможет с logNotificationDismiss и logNotificationReceived, так как мы не можем контролировать этот код.

Служба поддержки Google

Мы уведомили команду Firebase о проблеме и провели неделю, общаясь со службой поддержки. Тем не менее, они сказали нам, что не будут даже смотреть на проблему, пока мы не отправим сборку, которая воспроизводит сбой. Наше объяснение, что проблема связана с конкретным устройством, не помогло.

Вопрос

Что мы можем сделать, чтобы предотвратить сбой com.google.firebase.messaging.MessagingAnalytics в нашем приложении?

1 Ответ

0 голосов
/ 11 сентября 2018

Нам удалось решить проблему.

  1. Извлечение AAR com.google.firebase.firebase-messaging-X.X.X.aar
  2. Извлечь классов.jar
  3. Декомпиляция класса MessagingAnalytics
  4. Добавить попытку уловить в logNotificationDismiss и logNotificationReceived
  5. Компиляция MessagingAnalytics back
  6. Упаковать в classes.jar назад
  7. Пакет обратно в AAR
  8. Заменить AAR в проекте
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...