Ich bekomme immer wieder die NoClassDefFoundError
auf einem anderen Testgerät (4.4.2), das ich verwende. Funktioniert aber gut auf meinem Testgerät (Android 5.1).
Ich habe die Lösungen ausprobiert, die ich gegoogelt habe und nichts scheint zu funktionieren.
Ich verwende die Firebase-Echtzeitdatenbank. Kann jemand bitte helfen?
Hier ist das Fehlerprotokoll:
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)
Dies hat das Problem für mich gelöst:
Fügen Sie compile 'com.Android.support:multidex:1.0.2' zuapp/build.gradle hinzu.
Fügen Sie Android: name = "Android.support.multidex.MultiDexApplication" zum Anwendungs-Tag in AndroidManifest.xml hinzu.
Wenn Sie eine benutzerdefinierte Application-Klasse verwenden, überspringen Sie die AndroidManifest.xml-Datei und lassen Sie Ihre Application-Klasse MultiDexApplication anstelle von Application erweitern.
Dieser Fehler wird mit neueren Versionen gemeldet, die meistens in der Nähe von Revision 28,29 und in neueren Play-Dienstversionen behoben wurden. Wenn Sie also dieses Problem haben, stellen Sie sicher, dass Sie die Version des Google Play-Dienstes in Ihrem Android-Studio aktualisiert haben. wie es ältere Versionen haben. So aktualisieren Sie die Play-Services-Version ..
Folge diesen Schritten:
Wenn dann Sie verwenden MultiDex in Ihrer Anwendung, stellen Sie sicher, dass Sie dies richtig gemacht haben.
In Ihrer App-Ebene Build.Gradle -Datei verwenden Sie diesen Code multiDexEnabled true
defaultConfig {
applicationId "com.reversebits.tapanhp.saffer"
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
MultiDex-Abhängigkeit übernehmen in dependencies
in derselben Datei.
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'
}
Stellen Sie dann in Ihrer AndroidMenifest.xml -Datei sicher, dass Application-Tag den Namen MultiDexApplication hat.
<application
Android:name="Android.support.multidex.MultiDexApplication"
Android:allowBackup="true">
wenn Sie über eine eigene Application-Klasse verfügen und Sie diese in Ihrer Menifestdatei verwenden, können Sie multidex in Ihrer Application-Klasse initialisieren wie folgt
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);
}
}
Dank an TapanHP oben habe ich das für mich schnell zum Laufen gebracht:
Kurze Antwort:
Ich hatte multiDexEnabled= true
in meine app/build.gradle
-Datei gesetzt und dies lief gut auf Android 5.x.x, aber jedes Testgerät mit 4.x.x (Kit Kat) würde einen kritischen Fehler auslösen "Leider hat IhrAppName aufgehört."
Debugger zeigte:
Could not find class 'com.google.firebase.FirebaseOptions' ....
Hinweis: Ich habe auch eine benutzerdefinierte Klasse, die Application
erweitert.
Meine Lösung: Der benutzerdefinierten Klasse wurde der folgende Code hinzugefügt
import Android.support.multidex.MultiDex;
public class YourCustomApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
...
}
Kein kritischer Absturz mehr.
Ich habe das gleiche Problem, mit diesem habe ich gelöst:
https://stackoverflow.com/a/37364044
Sie müssen Android:name=".app"
durch Android:name="Android.support.multidex.MultiDexApplication"
ersetzen.