2015-09-15 11 views
8

ich eine Android-Anwendung haben, die ich vor kurzem unter anderem auf die Gradle Build-System aufgerüstet, wie eine neuere Version von Build-Tools, usw.java.lang.NoClassDefFoundError auf Android 4.4 oder

Meine targetSdkVersion ist 19, also sollte ich gut sein, auf Android 4.4 und höher zu gehen. Wenn ich mit einem 5.0+ Gerät laufe, ist alles in Ordnung; aber Android 4.4 stürzt immer mit einem java.lang.NoClassDefFoundError Fehler irgendeiner Art ab.

Als Test, entfernte ich Original-Klasse, die es über fehlte beschwert, nur um es abstürzen zu lassen, während auf eine andere Klasse zeigt.

Die erste Klasse, auf der es abgestürzt ist, war eine interne private Klasse in einer 3rd-Party-Bibliothek. Nach dem Entfernen dieser Bibliothek zeigte sie auf eine interne private Klasse in der App selbst.

Zusammengefasst:

  • die App läuft auf Android 5.0 und höher in Ordnung. Es stürzt mit java.lang.NoClassDefFoundError auf etwas weniger als 5.0 ab.
  • In bisherigen Tests scheint sich NoClassDef immer auf eine innere Klasse zu beziehen - dies basiert nur auf zwei Tests, also ist es vielleicht nichts Konkretes.

Hier ist meine android.manifest Datei: https://gist.github.com/rscott78/19dd88ccde66172d9332

Antwort

19

Für das, was es wert ist, kann dies passieren, wenn man ohne Zusatz von dem richtigen Code in Ihrer Anwendungsklasse Multi-dex-Unterstützung aktivieren.

Erstellen Sie eine Klasse, haben es von Anwendung erben, dann fügen Sie diese Überschreibung:

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

In Ihrem AndroidManifest, fügen Sie ein name Attribut für Ihre Anwendung tag:

<application name=".MyApplication" 
+0

für diejenigen, die noch muss multidexenabled hinzufügen, während dieser Fehler zur gleichen Zeit behoben wird, wird diese Lösung Ihren Tag vollständig retten! – user724861

+0

Aber was für ein Extra hat dieser Code übrigens? wollte nur wissen. Und ja, wer multidex zusammen mit fix aktivieren möchte, dann ist dies die Lösung. +1 –

+0

Wir haben unsere App so implementiert, aber wir haben immer noch den Absturz. Warum? –

Verwandte Themen