java.lang.NoClassDefFoundError auf Android 4.4 oder niedriger

8

Ich habe eine Android-Anwendung, die ich kürzlich auf das Gradle-Build-System aufgerüstet habe, unter anderem mit einer neueren Version von Build-Tools, etc.

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; Allerdings stürzt Android 4.4 immer mit einem java.lang.NoClassDefFoundError -Fehler ab.

Als Test habe ich die originale Klasse entfernt, von der sie sich beschwert hat, dass sie fehlt, nur um sie abstürzen zu lassen, während sie 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.

Zusammenfassend:

  • Die App läuft unter Android 5.0+ einwandfrei. Es stürzt mit java.lang.NoClassDefFoundError bei 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: Ссылка

    
bugfixr 15.09.2015, 01:54
quelle

1 Antwort

20

Für was es sich lohnt, kann dies passieren, wenn Sie Multi-Dex-Unterstützung aktivieren, ohne den richtigen Code in Ihrer Application-Klasse hinzuzufügen.

Erstellen Sie eine Klasse, lassen Sie sie von der Anwendung erben und fügen Sie dann diese Überschreibung hinzu:

%Vor%

Fügen Sie in Ihrem AndroidManifest ein name -Attribut zu Ihrem Anwendungs-Tag hinzu:

%Vor%     
bugfixr 15.09.2015 13:54
quelle

Tags und Links