web-dev-qa-db-fra.com

NoClassDefFoundError: com.google.firebase.FirebaseOptions

Je continue d’obtenir la NoClassDefFoundError sur l’autre périphérique de test (4.4.2) que j’utilise. Mais fonctionne bien sur mon appareil de test (Android 5.1).

J'ai essayé les solutions que j'ai googlé et rien ne semble fonctionner.

J'utilise la base de données en temps réel Firebase. Quelqu'un peut-il aider s'il vous plaît?

Voici le journal des erreurs:

06-03 01:36:29.607 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseOptions', referenced from method com.google.firebase.FirebaseApp.<init> 06-03 01:36:29.617 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApp$zzb', referenced from method com.google.firebase.FirebaseApp.zzaJ 06-03 01:36:29.621 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApiNotAvailableException', referenced from method com.google.firebase.FirebaseApp.getToken 06-03 01:36:29.629 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApp$zza', referenced from method com.google.firebase.FirebaseApp.zza 06-03 01:36:29.639 2655-2655/mobapps.mypersonal.biz.grouptracker E/AndroidRuntime: FATAL EXCEPTION: main
    Process: mobapps.mypersonal.biz.grouptracker, PID: 2655
    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:1656)
        at Android.content.ContentProvider.attachInfo(ContentProvider.Java:1627)
        at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
        at Android.app.ActivityThread.installProvider(ActivityThread.Java:5079)
        at Android.app.ActivityThread.installContentProviders(ActivityThread.Java:4653)
        at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4593)
        at Android.app.ActivityThread.access$1500(ActivityThread.Java:151)
        at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1402)
        at Android.os.Handler.dispatchMessage(Handler.Java:110)
        at Android.os.Looper.loop(Looper.Java:193)
        at Android.app.ActivityThread.main(ActivityThread.Java:5363)
        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:828)
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:644)
        at dalvik.system.NativeStart.main(Native Method)
10
sirking1991

C'est ce qui a résolu le problème pour moi:

  1. Ajouter compiler 'com.Android.support:multidex:1.0.2' toapp/build.gradle.

  2. Ajouter Android: name = "Android.support.multidex.MultiDexApplication" à la balise d'application dans AndroidManifest.xml .

    Si vous utilisez une classe d'application personnalisée, ignorez le fichier AndroidManifest.xml et demandez à votre classe d'application d'étendre MultiDexApplication à la place de l'application.

14
Minas Mina

Ce bogue est signalé avec les versions les plus récentes, principalement la révision 28,29 et sa résolution dans les versions les plus récentes des services Play. Par conséquent, si vous rencontrez ce problème, assurez-vous d'avoir mis à jour la version du service Google Play dans votre studio Android. comme les anciennes versions l'ont. Pour mettre à jour la version de Play Services ..

Suivez ces étapes:

  1. Aller au gestionnaire de SDK Android
  2. Allez à Extra ici comme vous le voyez dans l'image ci-dessous, mettez-le à jour avec la dernière version et essayez d'exécuter le projet.

 enter image description here

Ensuite, si vous utilisez MultiDex dans votre application, assurez-vous de l'avoir correctement exécuté.

Dans votre fichier Build.Gradle, utilisez ce code multiDexEnabled true

 defaultConfig {
        applicationId "com.reversebits.tapanhp.saffer"
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }

Appliquer la dépendance MultiDex} dans dependencies dans le même fichier.

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

    testCompile 'junit:junit:4.12'

    compile 'com.google.Android.gms:play-services:9.4.0'
    compile 'com.Android.support:multidex:1.0.1'
}

Ensuite, dans votre fichier AndroidMenifest.xml, assurez-vous que les balises d'application portent le nom MultiDexApplication.

<application
        Android:name="Android.support.multidex.MultiDexApplication"
        Android:allowBackup="true">

Remarque

si vous avez votre propre classe d'application et que vous l'utilisez dans votre fichier de manifeste, vous pouvez alors initialiser multidex dans votre classe d'application} comme suit,

public class AppClass extends Application {

    //this will initialize multidex in your own Application class
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

}
2
TapanHP

Merci à TapanHP above j'ai pu travailler rapidement pour moi: 

Réponse courte:

J'avais multiDexEnabled= true défini dans mon fichier app/build.gradle et cela fonctionnait bien sous Android 5.x.x ci-dessus, mais tout périphérique de test doté de 4.x.x (kit kat) émettrait une erreur critique "Malheureusement, YourAppName s'est arrêté."

Le débogueur a montré: 

Could not find class 'com.google.firebase.FirebaseOptions' ....

Remarque: J'ai également une classe personnalisée qui étend Application.

Ma solution: Ajout du code suivant dans ma classe d'application personnalisée

import Android.support.multidex.MultiDex;
public class YourCustomApplication extends Application {

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

...
} 

Plus de crash critique.

1
ritchie.a

J'ai le même problème, avec ceci j'ai résolu:

https://stackoverflow.com/a/37364044

Vous devez remplacer Android:name=".app" par Android:name="Android.support.multidex.MultiDexApplication"

0
Lyon