После обновления Firebase до версии 31+ перестала работать AppMetrica

При использовании Firebase Performance Monitoring из-за обновления Firebase до версии 31+ SDK AppMetrica перестает отправлять события.

Что происходит при обновлении Firebase:

  1. При сборке приложения Firebase Performance Monitoring плагин подменяет на свои классы код работы с сетью, это применяется во всех процессах.

  2. При запуске приложения с помощью ContentProvider происходит инициализация FirebaseApp, необходимого для работы FirebasePerfomance.

  3. При отправке сетевого запроса 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 только для главного процесса, но подмена сетевого стека произошла везде.

Как это исправить

  1. Активировать 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()
            )
        }
    }
  2. Временно отказаться от использования Firebase Perfomance. Для этого нужно не применять firebase-performance-plugin, удалив из build.gradle com.google.firebase.firebase-perf.

  3. Использовать более старую версию Firebase.

Данное поведение SDK Firebase не выглядит ожидаемым и возможно будет исправлено в следующих версиях.

Если вы не нашли ответ на свой вопрос, то вы можете задать его через форму обратной связи. Пожалуйста, опишите возникшую проблему как можно подробнее. Если возможно, приложите скриншот.