71 votes

Obtention d'une exception java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions après la mise à jour vers la nouvelle base de feu

J'ai mis à jour mon application sur la nouvelle base de feu en utilisant le this et maintenant, lorsque je compile mon projet, j'obtiens l'exception suivante.

Voici mon 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)
 

Mon Build.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'
 

Je ne sais pas d'où je tire cette exception. Toute aide sera grandement appréciée. Je vous remercie

141voto

BKC Points 1699

Cela a fonctionné pour moi:

  1. Si vous ne l'avez pas déjà, de mettre à jour votre "Google Play Services" de Révision 30 à partir de l'Android SDK Manager > Extras.

Android SDK Manager > Extras > Google Play Services

  1. Puis ajoutez la ligne compile 'com.android.support:multidex:1.0.1' de vos dépendances (ou tout simplement de supprimer multiDexEnabled true si pas nécessaire)

  2. Ajouter cet attribut à la balise application dans le manifeste: android:name="android.support.multidex.MultiDexApplication"
    Si vous avez déjà une application personnalisée classe définie dans Android Manifeste, l'étendre à partir d' MultiDexApplication au lieu de Application

Espérons qu'il a aidé!

46voto

enam Points 46

Utilisation des derniers services Google Play, mais ne fonctionnait pas. Pour moi, cette procédure fonctionne:

  1. Mis à jour ma classe d'application:

     public class App extends Application {
      @Override
      protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
     }
    }
     
  2. Mise à jour du fichier build.gradle :

     defaultConfig {
        ...
        multiDexEnabled true
    }
     
  3. Dépendances incluses:

     dependencies {
      compile 'com.android.support:multidex:1.0.0'
    }
     

22voto

Rushi Ayyappa Points 1944

Il est si simple de fixer les gars.Si vous utilisez le lecteur de services et de firebase à la fois dans votre projet, assurez-vous que vous n'avez pas importer tous les services disponibles dans le google.Il suffit d'importer l'Api de ce que vous avez réellement besoin. Par exemple:

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

Faire de cette façon, il peut vous donner noclassdeffounderror .Pour résoudre ce

supprimer play-services et la synchronisation de votre projet. Si vous avez de la dépendance comme l'utilisation d'annonces ou de cartes dans votre application puis de définir l'API spécifique. comme:

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

Remarque: un Maximum de ne pas essayer d'utiliser multiDexEnabled vrai. Cela devrait être votre dernière étape pour réparer quelque chose.

Espérons que cela est utile.

17voto

Arshak Points 1284

Je déclassé mon google play-dépendance de service

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

pour

compile 'com.google.android.gms:play-services:8.4.0' 

qui a résolu ce problème pour moi.

Veuillez vous référer à la suite d'un Débordement de Pile lien pour plus de description.


Veuillez Noter: Sur la mise à niveau vers la dernière google play-service
compile 'com.google.android.gms:play-services:9.4.0' il a résolu ce problème.

Ou vous pouvez importer sélectivement certains services dont vous avez besoin, au lieu de l'importation de tous les google play services.

13voto

sonnv1368 Points 1109

Étape 1: Correction de multidex

Classe d'application:

 public class StudyNApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        MultiDex.install(this);
    }
 }
 

Fiche de classement

 defaultConfig { 
...
multiDexEnabled true
}

dependencies {
  compile 'com.android.support:multidex:1.0.0'
}
 

Étape 2: Corrigez java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions.

Retirer

 compile 'com.google.android.gms:play-services:9.4.0'
 

Ajouter deux lib:

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

Cela a bien fonctionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X