После обновления Firebase до версии 31+ перестала работать AppMetrica
При использовании Firebase Performance Monitoring из-за обновления Firebase до версии 31+ SDK AppMetrica перестает отправлять события.
Что происходит при обновлении Firebase:
При сборке приложения Firebase Performance Monitoring плагин подменяет на свои классы код работы с сетью, это применяется во всех процессах.
При запуске приложения с помощью ContentProvider происходит инициализация FirebaseApp, необходимого для работы FirebasePerfomance.
При отправке сетевого запроса AppMetrica, подмененный в п.1 класс FirebasePerfUrlConnection выбрасывает исключение.
java.lang.NoClassDefFoundError: com.google.firebase.perf.config.RemoteConfigManager
....
Caused by: java.lang.ExceptionInInitializerError
at com.google.firebase.perf.config.RemoteConfigManager.getInstance(RemoteConfigManager.java:119)
....
Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.example.firebaseperfomancewithappmetrica:Metrica. Make sure to call FirebaseApp.initializeApp(Context) first.
Это происходит, так как в п.1 произошла активация FirebaseApp только для главного процесса, но подмена сетевого стека произошла везде.
Активировать FirebaseApp для всех процессов, в том числе для процесса AppMetrica SDK. Для в Application#onCreate() необходимо вызвать FirebaseApp.initializeApp(this) строго до активации AppMetrica SDK.
Пример:
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
// Init FirebaseApp for all processes
FirebaseApp.initializeApp(this)
// Then activate AppMetrica SDK
YandexMetrica.activate(
this,
YandexMetricaConfig.newConfigBuilder(API_KEY)
.build()
)
}
}
Временно отказаться от использования Firebase Perfomance. Для этого нужно не применять firebase-performance-plugin, удалив из build.gradle com.google.firebase.firebase-perf.
Использовать более старую версию Firebase.
Данное поведение SDK Firebase не выглядит ожидаемым и возможно будет исправлено в следующих версиях.
Если вы не нашли ответ на свой вопрос, то вы можете задать его через форму обратной связи. Пожалуйста, опишите возникшую проблему как можно подробнее. Если возможно, приложите скриншот.