2015-09-15 15 views
8

Ho un'applicazione Android che ho recentemente aggiornato al sistema Gradle costruiranno tra le altre cose, come l'utilizzo di una nuova versione di strumenti di compilazione, eccjava.lang.NoClassDefFoundError su Android 4.4 o inferiore

mio targetSdkVersion ha 19 anni, quindi dovrei andare bene su Android 4.4 e versioni successive. Quando corro usando un dispositivo 5.0+, tutto va bene; tuttavia Android 4.4 si blocca sempre con un errore di tipo java.lang.NoClassDefFoundError.

Come test, ho rimosso la classe originale che si lamentava del fatto che mancava solo di farlo arrestarsi mentre indicava una classe diversa.

La prima classe su cui è andato in crash è stata una classe privata interna in una libreria di terze parti. Dopo aver rimosso quella libreria, puntava a una classe privata interna nell'app stessa.

In sintesi:

  • l'applicazione funziona bene su Android 5.0+. Si blocca con java.lang.NoClassDefFoundError su qualsiasi valore inferiore a 5.0.
  • Nei test finora, NoClassDef sembra sempre riferirsi a una classe interna - questo si basa solo su due test, quindi potrebbe non essere nulla di concreto.

Ecco il mio file android.manifest: https://gist.github.com/rscott78/19dd88ccde66172d9332

risposta

19

Per quel che vale, questo può accadere quando si attiva il supporto multi-dex senza aggiungere il codice corretto nella classe Application.

Creare una classe, fare ereditare da Application, quindi aggiungere questa esclusione:

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

Nel vostro AndroidManifest, aggiungere un attributo name al tag applicazione:

<application name=".MyApplication" 
+0

per coloro che sono ancora ha bisogno di aggiungere multidexenabled durante la correzione di questo errore allo stesso tempo, questa soluzione salverà completamente la tua giornata! – user724861

+0

Ma quale extra questo codice ha fatto a proposito ?? volevo solo sapere. E sì, chiunque voglia abilitare il multidex insieme alla correzione, allora questa è la soluzione. +1 –

+0

Abbiamo effettivamente implementato la nostra app in questo modo, ma abbiamo ancora ottenuto il crash. Perché? –

Problemi correlati