#android #firebase #push-notification
#Android #firebase #push-уведомление
Вопрос:
Firebase Crashlytics сообщает об этом сбое на огромном количестве устройств с Android 8 и Android 6 в playstore. Мы также используем dexguard в приложении.
Среда и компоненты, которые я использую, такие, как показано ниже.
Проект build.gradle
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.2.0' // Crashlytics plugin
classpath 'com.google.firebase:perf-plugin:1.3.1' // Performance Monitoring plugin
Сборка приложения.gradle
implementation 'com.google.firebase:firebase-messaging:20.2.1'
implementation 'com.google.firebase:firebase-analytics:17.4.3'
implementation 'com.google.firebase:firebase-crashlytics:17.1.0'
implementation 'com.google.firebase:firebase-perf:19.0.7'
Это журналы, которые я получаю от Crashlytics.
???
com.google.firebase.installations.FirebaseInstallations.INotificationSideChannel$Stub$Proxy
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
at com.google.firebase.installations.FirebaseInstallations.INotificationSideChannel$Stub$Proxy(:452)
at com.google.firebase.installations.FirebaseInstallations.INotificationSideChannel$Stub$Proxy(:331)
at com.google.firebase.installations.FirebaseInstallations.INotificationSideChannel$Stub$Proxy(:296)
at com.google.firebase.installations.FirebaseInstallations$$Lambda$3.run(:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Это не дает никаких подсказок, чтобы мы могли воспроизвести этот сбой на наших устройствах, но это вызывает огромное количество пользователей.
Комментарии:
1. Не уверен, почему это было помечено как FCM (пока удалено). Было ли обновление, связанное с FCM до сбоев? Или как отправленное push-уведомление, которое могло вызвать сбой?
2. Мы не уверены, почему это происходит, поскольку у нас есть только следы от crashlytics. Это может быть связано с нажатием, вызывающим это, но все еще не уверен.
Ответ №1:
Мое первое предположение, что вы используете некоторые несовместимые версии Firebase SDK, поскольку под капотом много взаимозависимостей.
В наши дни я бы рекомендовал использовать спецификацию Firebase (спецификацию материалов) для управления всеми версиями SDK. Это позволяет указать версию только один раз (версию спецификации), а затем включить все остальные SDK без указания версии.
Чтобы использовать последнюю спецификацию и SDK в вашем вопросе, это будет выглядеть так:
implementation platform('com.google.firebase:firebase-bom:26.0.0')
implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-crashlytics'
implementation 'com.google.firebase:firebase-perf'
Если вы хотите посмотреть (или сравнить), какие версии SDK включены в определенную версию спецификации, проверьте этот удобный компаратор версий спецификации.
Ответ №2:
Эта проблема уже исправлена firebase в их последней версии. Я использовал предыдущие версии, и теперь я обновился до последней. Для получения дополнительной информации перейдите по этой ссылке.
https://github.com/firebase/firebase-android-sdk/issues/2147