Obteniendo la excepción java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions después de actualizar a la nueva base de fuego

Resuelto M.Waqas Pervez asked hace 54 años • 15 respuestas

Actualicé mi aplicación a la nueva base de fuego usando esto y ahora, cuando compilo mi proyecto, aparece la siguiente excepción.

Aquí está mi logcat:

11:57:54.533 27844-27844/com.example.dayshift_2.traveyy E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.dayshift_2.traveyy, PID: 27844
java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions
at com.google.firebase.FirebaseApp.zzbu(Unknown Source)
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1591)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1562)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:4871)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4466)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4406)
at android.app.ActivityThread.access$1500(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5102)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)

Mi compilación.gradle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.3"

defaultConfig {
    applicationId "com.example.dayshift_2.traveyy"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
packagingOptions {
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE-FIREBASE.txt'
    exclude 'META-INF/NOTICE'
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'

compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:design:23.3.0'
compile 'com.facebook.android:facebook-android-sdk:4.+'
compile 'com.google.android.gms:play-services:9.0.0'
compile 'com.google.firebase:firebase-database:9.0.0'
compile 'com.google.firebase:firebase-auth:9.0.0'
compile 'com.android.support:support-v13:23.3.0'
compile 'com.roughike:bottom-bar:1.2.1'
}


apply plugin: 'com.google.gms.google-services'

No estoy seguro de dónde obtengo esta excepción. cualquier ayuda será muy apreciada. Gracias

M.Waqas Pervez avatar Jan 01 '70 08:01 M.Waqas Pervez
Aceptado

Esto funcionó para mí:

  1. Si aún no lo ha hecho, actualice sus 'Servicios de Google Play' a la Revisión 30 desde Android SDK Manager > Extras.

Administrador de SDK de Android > Extras > Servicios de Google Play

  1. Y luego agregue la línea compile 'com.android.support:multidex:1.0.1'a sus dependencias (o simplemente elimínela multiDexEnabled truesi no es necesario)

  2. Agregue este atributo a la etiqueta de la aplicación en el manifiesto: android:name="android.support.multidex.MultiDexApplication"
    si ya tiene una clase de aplicación personalizada definida en el manifiesto de Android, extiéndala desde MultiDexApplicationen lugar deApplication

¡Espero que haya ayudado!

chaitan94 avatar May 21 '2016 14:05 chaitan94

Estaba usando los últimos servicios de Google Play pero no funcionaba. Para mí este procedimiento está funcionando:

  1. Actualicé mi clase de aplicación:

    public class App extends Application {
      @Override
      protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
     }
    }
    
  2. Archivo actualizado build.gradle:

    defaultConfig {
        ...
        multiDexEnabled true
    }
    
  3. Dependencias incluidas:

    dependencies {
      compile 'com.android.support:multidex:1.0.0'
    }
    
enam avatar Jun 10 '2016 15:06 enam

Es muy sencillo arreglarlo, muchachos. Si están utilizando player-services y firebase en su proyecto, asegúrese de no importar todos los servicios disponibles en Google. Simplemente importe las API que realmente necesita. Por ejemplo:

 compile 'com.google.firebase:firebase-messaging:9.2.0'
 compile 'com.google.android.gms:play-services:9.2.0'

Hacerlo de esta manera puede generar un error noclassdeffound . Para solucionar este problema

elimine los servicios de reproducción y sincronice su proyecto. Si tiene dependencias como el uso de anuncios o mapas en su aplicación, defina la API específica. como:

compile 'com.google.android.gms:play-services-maps:9.2.0'

Nota: Máximo no intente utilizar multiDexEnabled true . Este debería ser su último paso para arreglar algo.

Espero que esto sea útil.

Rushi Ayyappa avatar Jul 06 '2016 12:07 Rushi Ayyappa