studio scanner example ejemplo connectedthread app android android-studio android-gradle android-gradle-plugin

scanner - NoClassDefFoundError con Android Studio en Android 4



webview android studio 2017 (7)

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

He intentado comentar las referencias a las clases que no puede encontrar, pero siempre hay otra. Por lo que puedo decir, la clase infractora 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)
  • Parcelable.CREATOR implementaciones en mis modelos
  • Una clase interna que extiende 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?


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

2) Agregue compilar com.android.support:multidex:1.0.0 en sus dependencias

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


1) agregue multiDexEnabled = true en su DefaultConfig en build.gradle.

2) También debe incluir la compilación ''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 ayude



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

  1. Incluya la compile ''com.android.support:multidex:1.0.1'' en sus 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.


También publico resolver después de seguir los siguientes pasos

1) agregue multiDexEnabled = true en su DefaultConfig en build.gradle.

2) También debe incluir compilación 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"


Tuve el mismo problema, probé todas las soluciones sugeridas en pero no funcionaron en mi caso.
Después de eso descubrí que una de las bibliotecas compiladas por Java 8. Por lo tanto, también necesito habilitar Java 8 en mi proyecto.

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

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


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