Shrink Debug Multi Dex Component; No se puede leer dir / allclasses.jar

Estoy desarrollando una aplicación que permite Multidex para evitar el límite de 65k. Quiero agregar una biblioteca externa en el tipo Jar (es decir, iPay Jar SDK). He sincronizado el Gradle y he tenido éxito pero fallé en ejecutar el proyecto.

El mensaje de error se muestra como a continuación

Error:Execution failed for task ':app:shrinkDebugMultiDexComponents'. 

java.io.IOException: Can't read [/[dir]/app/build/intermediates/multi-dex/debug/allclasses.jar] (Can't process class [com/ipay/IpayAcitivity.class] (Unknown verification type [14] in stack map frame))

Este es mi código Gradle

 apply plugin: 'com.android.application' apply plugin: 'android-apt' def AAVersion = '3.2' buildscript { repositories { mavenCentral() } dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' } } repositories { mavenCentral() mavenLocal() } apt { arguments { androidManifestFile variant.outputs[0].processResources.manifestFile resourcePackageName '[My Package]' } } dependencies { apt "org.androidannotations:androidannotations:$AAVersion" compile "org.androidannotations:androidannotations-api:$AAVersion" compile fileTree(dir: 'libs', include: ['*.jar']) //Libs folder contains: org.apache.http.legacy.jar //and ipay88_androidv7.jar compile 'com.loopj.android:android-async-http:1.4.5' compile 'com.github.rey5137:material:1.2.1' compile 'com.jpardogo.materialtabstrip:library:1.0.9' compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:recyclerview-v7:23.0.1' compile 'com.google.android.gms:play-services:8.1.0' compile 'com.facebook.android:facebook-android-sdk:4.7.0' compile 'com.android.support:multidex:1.0.1' compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+' } android { compileSdkVersion 23 buildToolsVersion "23.0.1" useLibrary 'org.apache.http.legacy' defaultConfig { applicationId "[My Application Id]" minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName "1.0" multiDexEnabled = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main { manifest.srcFile 'src/main/AndroidManifest.xml' java.srcDirs = ['src/main/java', 'build/source/apt/debug'] resources.srcDirs = ['src/main/res'] res.srcDirs = ['src/main/res'] assets.srcDirs = ['src/main/assets'] } beta { resources.srcDirs = ['app/src/beta/res'] res.srcDirs = ['app/src/beta/res'] } } signingConfigs { release { ... } } } 

Antes de añadir este tipo de biblioteca externa (por ejemplo iPay Jar SDK), la aplicación se ejecutaba correctamente. Pero el problema surgió después de haber agregado iPay Jar SDK (segunda Jar Library).

Para más información, ya había seguido esta guía en https://developer.android.com/tools/building/multidex.html Pero no funcionó mi proyecto.

¿Cuál es su sugerencia para corregir este error?

2 Solutions collect form web for “Shrink Debug Multi Dex Component; No se puede leer dir / allclasses.jar”

Prueba esto:

 public class MyApplication extends MultiDexApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext( base ); } @Override public void onCreate() { MultiDex.install(getTargetContext()); super.onCreate(); } } 

Parece que su biblioteca no es compatible con Multidex. Así que mejor actualizar la biblioteca a la última versión (si hay una actualización disponible). O utilice únicamente la API de servicios de Google Play requerida en su aplicación y deshágase de Multidex. Reemplazar

  compile 'com.google.android.gms:play-services:8.1.0' (the whole library) 

Esto con algo que usas en tu aplicación como esta

  compile 'com.google.android.gms:play-services-ads:8.1.0' (library only for ads) 

Y eliminar esta compile 'com.android.support:multidex:1.0.1'

Puedes encontrar toda la API de servicios de Google Play aquí https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project

  • El lanzamiento de la primera aplicación de Android tarda más de 30 segundos y más
  • ¿Hay una manera de limitar el importe del método en el archivo principal dex mientras se utiliza la función MultiDex en Android Studio
  • NoClassDefFoundError debajo de SDK 21
  • ¿Puedo activar multidex en la compilación de depuración de Android solamente?
  • Demasiadas referencias de métodos en el proyecto de biblioteca de android - ClassNotFoundException
  • Pruebas unitarias Robolectric fallan después de Multidex
  • Multidex con Android 2.3 (API 9)
  • Método Gradle DSL no encontrado: 'multiDexEnabled ()'
  • Error en la instalación de Multidex
  • MultiDexApplication no reconocido
  • Android Multidex RuntimeException
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.