java.lang.RuntimeException: Unable to create application com.app.MyApp: java.lang.NullPointer Excepción: El componente FirebaseCrashlytics no está presente

Conseguir este fallo en sólo la construcción de lanzamiento con r8 habilitado en la migración de los fallos a la base de fuego SDK y actualizar la versión del plugin de gris

Nota : Tengo dependencias multidex definidas y establecidas en la construcción. gris y también en la clase de aplicación. Esto sucede sólo cuando actualizo mi versión de plugin de gris de 3.5 a 4.1

Estoy usando la versión Firebase-crashlytics

implementation 'com.google.firebase:firebase-crashlytics:17.0.0'

Versión plugin de Grade

classpath 'com.android.tools.build:gradle:4.0.1'

Crashlytics versión plugin de gris

classpath 'com.google.firebase:firebase-crashlytics-gradle:2.4.1'

También estoy advirtiendo en el logcat para

W/ComponentDiscovery: Class com.google.firebase.crashlytics.CrashlyticsRegistrar is not an found.
    java.lang.ClassNotFoundException: com.google.firebase.crashlytics.CrashlyticsRegistrar

 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.crashlytics.CrashlyticsRegistrar" on path: DexPathList


W/ComponentDiscovery: Class com.google.firebase.auth.FirebaseAuthRegistrar is not an found.
    java.lang.ClassNotFoundException: com.google.firebase.auth.FirebaseAuthRegistrar

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.auth.FirebaseAuthRegistrar" on path: DexPathList

W/ComponentDiscovery: Class com.google.firebase.database.DatabaseRegistrar is not an found.
    java.lang.ClassNotFoundException: com.google.firebase.database.DatabaseRegistrar

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.database.DatabaseRegistrar" on path: DexPathList

Para deshacerse de la advertencia anterior añadí el siguiente manifiesto en android bajo etiqueta de aplicación

 
      
      
      

    

Todavía no hay suerte. Después de hacer todo esto veo esto

java.lang.RuntimeException: Unable to create application com.app.MyApp: java.lang.NullPointerException: FirebaseCrashlytics component is not present

NPE cuando trato de acceder

FirebaseCrashlytics.getInstance();

Pregunta hecha hace 3 años, 4 meses, 28 días - Por logicluminary


5 Respuestas:

  • Añadiendo -keep class com.google.firebase.** { *; } en proguard-rules.pro, arregló este asunto.

    Respondida el Dec 18, 2020 a las 12:36 - por codeartisan

    Votos positivos: 0 | Votos negativos: 0

  • Tenía problemas con esto, parece que tenemos que registrarnos manualmente en nuestro manifiesto

    Inserte esto en su manifiesto:

      
    
            
            
            
            
        
    

    Con esto verá que la aplicación se registrará (en) adb logcat -s FirebaseCrashlytics)

    Pero los informes todavía no estaban siendo enviados, mirando la salida de los registros mostrados Transport backend 'cct' is not registered.

    Crashlytics report could not be enqueued to DataTransport
        java.lang.IllegalArgumentException: Transport backend 'cct' is not registered
          at com.google.android.datatransport.runtime.scheduling.DefaultScheduler.lambda$schedule$1$DefaultScheduler(DefaultScheduler.java:77)
          at com.google.android.datatransport.runtime.scheduling.-$$Lambda$DefaultScheduler$DT3VaFjNTilJSvcr2dFbjD3xxDQ.run(Unknown Source:8)
          at com.google.android.datatransport.runtime.SafeLoggingExecutor$SafeLoggingRunnable.run(SafeLoggingExecutor.java:47)
    

    Entonces simplemente agregue esta información a su manifiesto

    
         
    
    
    
    

    Y agregue la base de fuego inicial en su aplicación oncreate

    class MyApp : Application() {
    
        override fun onCreate() {
            super.onCreate()
            ...
            FirebaseApp.initializeApp(this)
        }
    }
    

    Referencias: Esto y esto

    Espero que esto ayude.

    Respondida el Dec 18, 2020 a las 12:46 - por syntaxsavvy

    Votos positivos: 0 | Votos negativos: 0

  • Pruebe añadir Firebase-BOM en Gradle (app).

    implementation platform('com.google.firebase:firebase-bom:26.1.1')
    

    Luego en su clase de aplicación En lugar de

    FirebaseCrashlytics.getInstance();
    

    Uso

    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
    

    Respondida el Dec 18, 2020 a las 12:51 - por syntaxsensei8acf

    Votos positivos: 0 | Votos negativos: 0

  • El problema que estás experimentando parece estar relacionado con la migración de Crashlytics a Firebase SDK y la actualización del plugin de Gradle. Aquí hay algunas sugerencias para resolver este problema:

    • Verifica la configuración del plugin de Gradle:
    Asegúrate de que la configuración del plugin de Gradle para Firebase Crashlytics sea compatible con la nueva versión que estás utilizando. Puedes consultar la documentación oficial de Firebase para obtener la configuración correcta: https://firebase.google.com/docs/crashlytics/get-started?platform=android

    • Revisa la configuración de Firebase en tu proyecto:
    Verifica que la configuración de Firebase en tu proyecto esté correctamente configurada. Si estás utilizando varias dependencias de Firebase, asegúrate de que todas estén actualizadas y configuradas correctamente en tu archivo de Gradle y en tu archivo de manifiesto.

    • Verifica la configuración de ProGuard o R8:
    Es posible que R8 esté aplicando alguna optimización que esté causando que el componente de Firebase Crashlytics no se encuentre. Revisa la configuración de ProGuard o R8 para asegurarte de que no est

    Respondida el Dec 19, 2020 a las 12:33 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Problema:

    Estás obteniendo una excepción NullPointerException cuando intentas acceder a FirebaseCrashlytics.getInstance() en una compilación de lanzamiento con la optimización R8 habilitada.

    Causa:

    La optimización R8 elimina código no utilizado de tu APK, lo que puede provocar que se eliminen los componentes de FirebaseCrashlytics.

    Solución:

    Para resolver este problema, debes asegurarte de que los componentes de FirebaseCrashlytics se utilizan en tu aplicación. Puedes hacer esto agregando las siguientes líneas a tu código de inicialización de Firebase:

    java
    Firebase.initializeApp(this);
    FirebaseCrashlytics.getInstance();
    

    Dependencias de Multidex:

    También has mencionado que tienes dependencias de multidex establecidas. Asegúrate de que estas dependencias se agreguen correctamente a tu archivo build.gradle:

    gradle
    android {
        defaultConfig {
            multiDexEnabled true
        }
    }
    
    dependencies {
        implementation 'com.android.support:multidex:1.0.3'
    }
    

    Advertencias del Logcat:

    Las advertencias que ves en el logcat indican que no se pueden encontrar las clases de registro de componentes de Firebase. Puedes resolver esto agregando las siguientes líneas a tu manifiesto de Android:

    xml
    
        
        
        
    
    

    Versiones de la biblioteca:

    Asegúrate de que estás utilizando las últimas versiones de las bibliotecas de Firebase y el complemento de Gradle:

    Firebase Crashlytics: 18.2.10 Gradle Plugin: 4.3.4 * Crashlytics Gradle Plugin: 2.8.1

    Respondida el Dec 19, 2020 a las 12:39 - por Gemini

    Votos positivos: 0 | Votos negativos: 0