NoClassDefFoundError con Android Studio en Android 4

Estoy en el proceso de convertir una aplicación existente de Eclipse a Android Studio. Sin embargo, cuando lo ejecuto en un dispositivo que ejecuta 4.x (he probado varias versiones en emuladores), inmediatamente se bloquea con un NoClassDefFoundError .

Intenté comentar referencias a las clases que no puede encontrar, pero siempre hay otras. Por lo que puede decir, la clase ofensiva es siempre

  1. Dentro de mi propio código
  2. Una clase interna ( Actualización: con más investigación, esta no siempre es cierta)

Todo funciona bien en un emulador 5.0.1 (no tengo un dispositivo para probar). Mi archivo build.gradle es bastante largo, pero se ve así:

 apply plugin: 'com.android.application' apply plugin: 'android-apt' def AAVersion = "2.7.1" android { compileSdkVersion 19 buildToolsVersion "21.1.1" defaultConfig { applicationId "com.myapp.android" minSdkVersion 8 targetSdkVersion 19 multiDexEnabled = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } packagingOptions { *snip* } } buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' } } repositories { maven { url "https://repo.commonsware.com.s3.amazonaws.com" } } apt { arguments { androidManifestFile variant.outputs[0].processResources.manifestFile resourcePackageName 'com.pact.android' } } dependencies { *snip compile project(':...') declarations apt "com.googlecode.androidannotations:androidannotations:$AAVersion" compile "com.googlecode.androidannotations:androidannotations-api:$AAVersion" compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar' compile 'com.android.support:support-v4:21.0.3' compile 'com.google.android.gms:play-services:3.1.36' *snip many more compile declarations* compile fileTree(dir: 'libs', include: ['*.jar']) } 

Algunos ejemplos de clases que causan problemas:

  • Una clase anónima que implementa una interfaz dentro de la biblioteca de Facebook (como un proyecto de biblioteca)
  • Implementaciones Parcelable.CREATOR en mis modelos
  • Una clase interna que amplía android.os.Library
  • Una clase interna en mi propio código
  • Una clase que implementa una interfaz en una biblioteca de maven

¿Qué está mal y cómo lo soluciono?

Implementaba incompletamente el soporte MultiDex, por lo que algunas de mis clases no estaban en el archivo dex apropiado. Para solucionarlo, debe hacer algo más que simplemente establecer multiDexEnabled = true en su bloque defaultConfig . También tienes que:

  1. Incluye compile 'com.android.support:multidex:1.0.1' en tus dependencias
  2. Haga que su clase de Aplicación extienda MultiDexApplication lugar de solo Application . Alternativamente, puede llamar a MultiDex.install() en attachBaseContext() de su aplicación.

Consulte https://developer.android.com/tools/building/multidex.html para obtener más detalles.

1) Agregue multiDexEnabled = true en su configuración predeterminada

2) Agregue comstackción com.android.support:multidex:1.0.0 en sus dependencias

3) La clase de Application extiende MultiDexApplication lugar de simplemente Application

multiDexEnabled = true el problema eliminando multiDexEnabled = true en mi caso.

1) agregue multiDexEnabled = true en su configuración predeterminada en build.gradle.

2) También debe incluir comstackr ‘com.android.support:multidex:1.0.1’

3) agregue lo siguiente a su etiqueta de “aplicación” en su manifiesto:

android: name = “android.support.multidex.MultiDexApplication”

está trabajando conmigo, espero que ayudes

También me acuerdo resolver después de hacer los siguientes pasos

1) agregue multiDexEnabled = true en su configuración predeterminada en build.gradle.

2) También debe incluir comstackr com.android.support:multidex:1.0.1

3) agregue lo siguiente a su etiqueta de “aplicación” en su manifiesto:

 android:name="android.support.multidex.MultiDexApplication" 

Obtuve el mismo problema, intenté todas las soluciones sugeridas en StackOverflow pero no funcionaron en mi caso.
Después de eso descubrí que una de las bibliotecas comstackdas por Java 8. Por lo tanto, tengo que habilitar Java 8 en mi proyecto también.

  android { //... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } 

Hay muchas razones que conducen a este error. Espero eso ayude.

En mi caso, fue Kotlin porque cada uno estaba causando la excepción. Más información aquí: java.lang.NoClassDefFoundError $$ inlined $ forEach $ lambda $ 1 en Kotlin