web-dev-qa-db-fra.com

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

69
M.Waqas Pervez

Cela a fonctionné pour moi:

  1. Si vous ne l'avez pas déjà fait, mettez à jour vos "Services Google Play" vers la Révision 30 à partir de Android Gestionnaire de SDK> Extras.

Android SDK Manager > Extras > Google Play Services

  1. Et ajoutez ensuite la ligne compile 'com.Android.support:multidex:1.0.1' à vos dépendances (ou supprimez simplement multiDexEnabled true si non requis)

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

J'espère que ça a aidé!

142
BKC

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. Fichier build.gradle mis à jour:

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

    dependencies {
      compile 'com.Android.support:multidex:1.0.0'
    }
    
45
enam

C'est si simple de réparer les gars. Si vous utilisez les services de lecteur et Firebase dans votre projet, assurez-vous de ne pas importer tous les services disponibles dans google. Il vous suffit d'importer les API dont 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'

En procédant de cette façon, cela peut vous donner noclassdeffounderror .Pour résoudre ce problème

supprimez play-services et synchronisez votre projet. Si vous avez des dépendances, telles que l'utilisation d'annonces ou de cartes dans votre application, définissez l'API spécifique. comme:

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

Remarque: Maximum, n'essayez pas d'utiliser multiDexEnabled true. Cela devrait être votre dernière étape pour réparer quelque chose.

J'espère que c'est utile.

22
Rushi Ayyappa

J'ai rétrogradé ma dépendance de Google Play-Service à partir de

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

à

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

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

Veuillez vous référer à le lien de débordement de pile suivant pour une description plus détaillée .


Remarque: lors de la mise à niveau vers le dernier service Google Play
compile 'com.google.Android.gms:play-services:9.4.0' il a également résolu ce problème.

Ou vous pouvez importer de manière sélective certains services dont vous avez besoin, au lieu d'importer tous les services Google Play.

17
Arshak

É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: Correction de 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é.

13
sonnv1368

Ne l'oublie pas.

Android:name="Android.support.multidex.MultiDexApplication"
5
bb14816

J'ai résolu ce problème en ajoutant ceci et en abaissant la dépendance de play-service à la compilation 8.4.0 'com.google.Android.gms: play-services: 8.4.0'

    @Override
protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(newBase);
    MultiDex.install(this);
}

et ajoutez ce qui suit au manifeste

Android:name="Android.support.multidex.MultiDexApplication"
3
Abednego

Je faisais face à la même erreur lorsque j'ai incrémenté le targetSDKVersion de 22 à 23 ans, j'ai passé au moins une journée entière à résoudre le problème. Maintenant, finalement, je trouve le résultat qui utilise différentes API de service de jeu dans votre fichier build.gradle. Source: https://developers.google.com/Android/guides/setup#add_google_play_services_to_votre_projet

J'ai ajouté seulement les Api pertinentes et mon application fonctionne bien.

1
Muhammad Umer
 GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(**R.string.default_web_client_id**))
            .requestEmail()
            .build();

Dans mon même cas, j'ai changé requestIdToken et cela a fonctionné.

0
ugurozgen

Je pense avoir trouvé une solution à ce problème à ce sujet réponse , donnez-lui un coup d'oeil et remerciez-le @ Gabriele Mariotti , il a écrit:

Dans votre build.gradle de niveau supérieur, vous devez ajouter:

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

Puis dans votre module build.gradle:

apply plugin: 'com.Android.application'

Android {
  // ...
}

dependencies {
  // ... 

}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
0
Andrea Montanari
dependencies {
compile 'com.Android.support:support-v4:25.0.1'
compile 'com.google.firebase:firebase-ads:9.0.2'
compile files('libs/StartAppInApp-3.5.0.jar')
compile 'com.Android.support:multidex:1.0.1'    
}  

appliquer le plugin: 'com.google.gms.google-services'.

0
Muhammad Azeem

Configurez votre application pour multidex pour résoudre ce problème.

Pour minSdkVersion 21 ou plus , définissez multiDexEnabled sur true dans votre fichier build.gradle au niveau du module, comme indiqué ci-dessous:

Android {
  defaultConfig {
    //...
    minSdkVersion 21 
    targetSdkVersion 26
    multiDexEnabled true
   }
  //...
 }

Pour minSdkVersion API 20 ou inférieure

  1. Modifiez le module-level build.gradle et ajoutez la bibliothèque multidex en tant que dépendance, comme indiqué ci-dessous:

    Android { defaultConfig { ... minSdkVersion 15 targetSdkVersion 26 multiDexEnabled true } //... } dependencies { compile 'com.Android.support:multidex:1.0.1' }

  2. Si vous ne remplacez pas la classe Application, modifiez votre fichier manifest pour définir Android:name dans la balise de l'application comme suit

    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:Android="http://schemas.Android.com/apk/res/Android" package="com.example.myapp"> <application Android:name="Android.support.multidex.MultiDexApplication"> //... </application> </manifest>

    2.1.1. Si vous remplacez la classe Application Extend MultiDexApplication

    public class MyApplication extends MultiDexApplication { //... }
    

    2.1.2. Ou, si vous remplacez la classe Application, mais qu'il n'est pas possible de changer la classe de base, vous pouvez remplacer la classe attachBaseContext() Méthode et appelez MultiDex.install (this) pour activer multidex:

    public class MyApplication extends SomeOtherApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }

pour plus mdex-gradle

J'espère que cela aidera d'autres personnes confrontées au même problème.

0
Rupesh Yadav

essayez de résoudre ...

dans le fichier Gradle

multiDexEnabled true

compiler 'com.Android.support:multidex:1.0.1'

Fichier manifeste

balise d'application ajouter cette ligne

Android: name = "Android.support.multidex.MultiDexApplication"

0
Hiral Khakhriya

Avant de faire toutes ces solutions mouvementées, essayez de Nettoyer le projet ou Reconstruire le projet à partir de Android Studio.

Java.lang. NoClassDefFoundError

Des exceptions sont levées lorsque vous modifiez n'importe quel nom Classe dans votre projet, mais il ne peut pas obtenir les modifications que vous avez apportées à Exécution.

0
Walid Al Ashik