¿Cómo resolver java.util.zip.ZipException?

Siempre que bash depurar e implementar mi aplicación de Android (en Android Studio 0.9) me aparece el siguiente error:

Execution failed for task ':app:packageAllDebugClassesForMultiDex'. java.util.zip.ZipException: duplicate entry: android/support/multidex/BuildConfig.class 

Para aclarar las cosas aquí hay una breve historia de mis acciones:

  1. Esta mañana el proyecto estaba funcionando bien
  2. Se agregaron algunas clases y métodos adicionales
  3. Rompió el límite y recibió este error: Unable to execute dex: method ID not in [0, 0xffff]: 65536
  4. Decidí agregar soporte multiDex a mi proyecto ya que la reducción de las dependencias no era una opción

Desde entonces sigo recibiendo el error descrito justo después de agregar multiDex a mi proyecto al seguir esta publicación SO. Uso de Gradle para dividir bibliotecas externas en archivos dex separados para resolver el límite de Android Dalvik 64k métodos .

Aquí está mi archivo build.gradle:

 apply plugin: 'com.android.application' repositories { jcenter() } android { compileSdkVersion 21 buildToolsVersion '21.1.0' defaultConfig { applicationId "com.stackoverflow.application" minSdkVersion 15 targetSdkVersion 21 versionCode 1 versionName "1.0" multiDexEnabled = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } dexOptions { preDexLibraries = false } } afterEvaluate { tasks.matching { it.name.startsWith('dex') }.each { dx -> if (dx.additionalParameters == null) { dx.additionalParameters = [] } dx.additionalParameters += '--multi-dex' dx.additionalParameters += "--main-dex-list=$projectDir/".toString() // enable the main-dex-list } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':viewPagerIndicatorLibrary') compile 'com.google.android:multidex:0.1' compile 'com.j256.ormlite:ormlite-android:4.48' compile 'com.j256.ormlite:ormlite-core:4.48' compile 'de.greenrobot:eventbus:2.2.1' compile 'se.emilsjolander:stickylistheaders:2.5.1' compile 'joda-time:joda-time:2.5' compile 'com.makeramen:roundedimageview:1.4.0' compile 'javax.inject:javax.inject:1' compile 'com.squareup.picasso:picasso:2.3.4' compile 'com.googlecode.libphonenumber:libphonenumber:6.3.1' compile('com.google.api-client:google-api-client-gson:1.18.0-rc') { exclude module: 'httpclient' } compile 'com.google.android.gms:play-services:6.1.71' compile('com.google.api-client:google-api-client:1.17.0-rc') { exclude(group: 'xpp3', module: 'xpp3') exclude(group: 'org.apache.httpcomponents', module: 'httpclient') exclude(group: 'junit', module: 'junit') exclude(group: 'com.google.android', module: 'android') } compile('com.google.api-client:google-api-client-android:1.17.0-rc') { exclude(group: 'com.google.android.google-play-services', module: 'google-play-services') } compile('com.google.http-client:google-http-client-android:1.17.0-rc') { exclude(group: 'com.google.android', module: 'android') } compile 'com.google.guava:guava:18.0' } 

También tengo otras dependencias de proyecto para usar la biblioteca viewPagerIndicator , así como algunas jarras en mi carpeta / libs:

  • android-async-http-1.4.6.jar
  • guice-3.0-no_aop.jar
  • jsr305-1.3.9.jar
  • roboguice-2.0.jar

¡Cualquier consejo sobre cómo podría resolver este problema sin eliminar ninguna de mis dependencias necesarias es bienvenido!

Editar: Este es un error y se debe arreglar. Ver https://code.google.com/p/android/issues/detail?id=81804

También tengo este problema y no tengo una respuesta. Pero esto es lo que puedo agregar:

La clase BuildConfig es una clase mágica generada como parte del proceso de comstackción. Por alguna razón, existe una versión con el mismo nombre completamente calificado ( android.support.multidex.BuildConfig ) en mutildex-1.0.0 y multidex-instrumentation-1.0.0 aars.

No creo que hayamos hecho nada malo. Creo que esto es un síntoma de estar a la vanguardia. Levanté un informe de error .

El hilo es un poco viejo, pero obtuve este error también.

Mi problema fue que utilicé dos versiones diferentes de com.google.android.gms: play-services en mi archivo gradle.

 compile 'com.google.android.gms:play-services-gcm:7.5.0' compile 'com.google.android.gms:play-services-analytics:7.3.0' // WRONG! 

Asegúrate de usar siempre las mismas versiones como:

 compile 'com.google.android.gms:play-services-gcm:7.5.0' compile 'com.google.android.gms:play-services-analytics:7.5.0' 

Para diagnosticar y solucionar este problema, ejecute este comando de gradle:

 ./gradlew clean app:dependencies 

esto mostrará una lista de todas las dependencias en su aplicación en un árbol. Busque los resultados de la clase duplicada ofensiva y agregue

 compile('naughty.library') { exclude group: 'foo', module: 'bar' } 

para eliminar el duplicado

Recientemente tuve este error, y después de mirar mis “Bibliotecas externas” en el estudio de Android, resultó que una de mis bibliotecas se había incluido en dos números de versión. (En este caso fue wire-runtime 1.5.1 y 1.5.2).

Lo que recomendaría es mirar dentro de “Bibliotecas externas” en su vista de Proyecto, y ver si hay alguna biblioteca redundante allí. Incluye dependencias transitorias también, por lo que puede encontrar algo allí que lo sorprenda.

1.actualizar el servicio google play

2.add

 compile 'com.google.android.gms:play-services-fitness:8.1.0' compile 'com.google.android.gms:play-services-wearable:8.1.0' 

en lugar de compile 'com.google.android.gms:play-services:8.1.0'

en el archivo build.gradle.

3.

 defaultConfig { multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.1' } 

En mi caso, el motivo fue Facebook Android SDK. Solo excluya la dependencia transitiva:

 compile('com.facebook.android:facebook-android-sdk:+') { exclude group: 'com.android.support', module: 'multidex' } 

En su caso, puede tratarse de otra dependencia, simplemente multidex una por una y encontrará la que tiene multidex dependencia transitiva multidex .

Si habilita multiDex, debe dejar de hacer la lógica en afterEvaluate {} . El soporte multi-dex se ocupará de la lista principal dex para usted.

Este tipo de error, como la entrada duplicada, ocurre cuando una clase se encuentra en más de un lugar. Para superar este problema, Simple search la clase que muestra la entrada duplicada en el proyecto. Le mostrará todos los caminos donde esta clase presenta más de un lugar. En Windows CNTRL + N es un atajo de teclado para buscar en archivos. Simple intente eliminar uno de los archivos lib o file y el problema se resuelve.

 tools:overrideLibrary="com.google.android.gms.location, com.google.android.gms.internal" 

Hice el truco para mí (supongo que debes cambiar la ubicación con la biblioteca de google que uses)

Está agregando una biblioteca como esta
(UN). comstackr archivos (‘libs / YOUR_LIBRARY.jar’)
y este paquete de biblioteca ya está disponible en tu código.
comentar o eliminar esta línea
// comstackr archivos (‘libs / YOUR_LIBRARY.jar’)

Cómo saber la copia duplicada de la biblioteca en su proyecto:
descomprime tu “YOUR_LIBRARY.jar” y ve el mismo nombre de clase en tu código.

ve a File/Invalidate Chaches/Restart y tu problema está resuelto