После обновления 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 не выглядит ожидаемым и возможно будет исправлено в следующих версиях.