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)
C'est ce qui a résolu le problème pour moi:
Ajouter compiler 'com.Android.support:multidex:1.0.2' toapp/build.gradle.
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.
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:
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">
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);
}
}
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.
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"