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

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

Написать в службу поддержки