android android-studio gradle error-handling exception-handling

android - java util zip zipException: entrada duplicada



android-studio gradle (4)

No necesita compilar las mismas dependencias en cada módulo por separado, como su aplicación: gradle está compilando ''com.android.support:support-v4:24.2.1'' que ya ha sido compilado en su biblioteca gradle como ''com.android.support:support-v4:18.+ ''donde puedo ver que ha agregado el módulo de la biblioteca como una dependencia a la aplicación: gradle, aquí está tratando de replicarlo. Lo mismo ocurre con otros módulos también. A menos que sean independientes.

Consejo: Además, no use versiones anónimas como ''com.android.support:support-v4:18.+'' sino que use las versiones apropiadas.

Mientras ejecuto el proyecto recibo este error

Error: ejecución fallida para la tarea '': ..........''. com.android.build.api.transform.TransformException: java.util.zip.ZipException: entrada duplicada: javax / annotation / CheckForNull.class

Así es como se ve mi aplicación: gradle:

apply plugin: ''com.android.application'' android { compileSdkVersion 24 buildToolsVersion "24.0.3" useLibrary ''org.apache.http.legacy'' defaultConfig { applicationId "com.sample.Example" minSdkVersion 15 targetSdkVersion 24 multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.txt'' } } } dependencies { compile (project('':library'')){ exclude module: ''support-v4'' } compile (project('':facebookLib'')){ exclude module: ''support-v4'' } compile ''com.google.http-client:google-http-client-gson:1.20.0'' compile ''com.google.code.gson:gson:2.4'' compile files(''libs/CWAC-SackOfViewsAdapter.jar'') compile files(''libs/FlurryAgent.jar'') compile files(''libs/google-api-client-1.15.0-rc.jar'') compile files(''libs/google-api-client-android-1.15.0-rc.jar'') compile files(''libs/google-api-services-androidpublisher-v1-rev15-1.15.0-rc.jar'') compile files(''libs/google-http-client-1.15.0-rc.jar'') compile files(''libs/google-http-client-android-1.15.0-rc.jar'') compile files(''libs/google-http-client-jackson-1.15.0-rc.jar'') compile files(''libs/google-http-client-jackson2-1.15.0-rc.jar'') compile files(''libs/google-oauth-client-1.15.0-rc.jar'') compile files(''libs/google-oauth-client-java6-1.15.0-rc.jar'') compile files(''libs/httpmime-4.2.jar'') compile files(''libs/in-app-purchasing-1.0.3.jar'') compile files(''libs/jackson-core-2.1.3.jar'') compile files(''libs/jackson-core-asl-1.9.11.jar'') compile files(''libs/json_simple-1.1.jar'') compile files(''libs/jsr305-1.3.9.jar'') compile files(''libs/picasso-2.1.1.jar'') compile files(''libs/signpost-commonshttp4-1.2.1.1.jar'') compile files(''libs/signpost-core-1.2.1.1.jar'') compile files(''libs/signpost-jetty6-1.2.1.1.jar'') compile files(''libs/twitter4j-core-4.0.1.jar'') compile files(''libs/amazon-device-messaging-1.0.1.jar'') compile ''com.google.android.gms:play-services:9.6.1'' compile ''com.android.support:appcompat-v7:24.2.1'' compile ''com.android.support:support-v4:24.2.1'' compile ''com.android.support:design:24.2.1'' compile ''com.android.support:recyclerview-v7:24.2.1'' compile ''com.android.support:cardview-v7:24.2.1'' compile ''com.android.support:multidex:1.0.1'' }

volea: gradle

android { compileSdkVersion 17 buildToolsVersion "24.0.3" defaultConfig { minSdkVersion 8 targetSdkVersion 8 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.txt'' } } }

biblioteca: gradle

android { compileSdkVersion 16 buildToolsVersion "23.0.3" defaultConfig { minSdkVersion 4 targetSdkVersion 4 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.txt'' } } } dependencies { compile ''com.android.support:support-v4:18.0.0'' }

facebookLib: gradle

android { compileSdkVersion 17 buildToolsVersion "24.0.3" defaultConfig { minSdkVersion 8 targetSdkVersion 8 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.txt'' } } } dependencies { compile ''com.android.support:support-v4:18.0.0'' }

¿Alguien puede sugerir una salida a este error? Gracias por adelantado.


com.android.support:support-v4:_____

Esta biblioteca se usa varias veces. Entonces, esto es lo que puedes hacer. haz esto en el gradle de tu biblioteca o en el gradle de facebooklib:

compile(project('':facebookLib'')) { exclude module: ''support-v4'' }

O

compile(project('':library'')) { exclude module: ''support-v4'' }

Sugerencia: debe crear una tarea gradle para imprimir sus dependencias al compilarlas y examinarlas. Vea si hay algo que pueda eliminar / mejorar

EDITAR:

ejecuta este comando en la pestaña del terminal de tu Android Studio.

./gradlew app:dependencies

Esto imprimirá todas las dependencias y sus (sub) dependencias. Mire a través de él y vea cuál de las dependencias se llama dos veces donde.

Cada vez que veas la misma biblioteca dos veces, debes usar el método de exclude que se muestra arriba para excluir a esa moudle o grupo.

Mira aquí para más detalles. Es una explicación agradable y simple. https://www.linkedin.com/pulse/how-find-dependencies-particular-dependency-gradle-hesamedin-kamalan-1


Podría hacer una limpieza de dependencias en Android Studio. Al hacer esto, encontrará las bibliotecas referenciadas por módulo en la vista de árbol. De esa forma, encontrará qué dependencias generan el error de entrada duplicado. Busque en su proyecto qué archivos están usando o haciendo referencia a CheckForNull.class. Tome nota del paquete que lo contiene.

Abra la ventana del terminal en su proyecto y ejecute el siguiente comando

gradlew clean app:dependencies

Tenga en cuenta que TODAS las dependencias se eliminarán y volverán a descargarse. Si tiene muchas bibliotecas de gradle, puede tardar unos minutos en volver a descargarlas. Después de eso, encontrará un resumen donde puede filtrar el paquete que busca. En mi caso, el problema fue con el paquete apache.commons. Hago el filtro y encuentro algo como esto:

+--- com.amazonaws:aws-android-sdk-s3:2.4.0 | +--- com.amazonaws:aws-android-sdk-core:2.4.0 (*) | +--- com.amazonaws:aws-android-sdk-kms:2.4.0 | | /--- com.amazonaws:aws-android-sdk-core:2.4.0 (*) | +--- org.apache.commons:commons-io:1.3.2 | | /--- commons-io:commons-io:1.3.2 -> 2.4 | +--- commons-io:commons-io:2.4 | /--- org.bouncycastle:bcprov-jdk16:1.44

En mi caso, era una entrada duplicada generada por AWS Android SDK, referida a la dependencia de commons-io.

Finalmente, solo haga la exclusión en su archivo gradle de esta manera (recuerde que en mi caso fue una dependencia diferente):

compile(''com.amazonaws:aws-android-sdk-s3:2.4.0'') { exclude group: ''org.apache.commons'' }


Ejecute lo siguiente para encontrar los duplicados

task findDuplicates { doLast { String findMe = ''javax/annotation/CheckForNull.class'' configurations.compile.files.each { file -> if (file.name.endsWith(''.jar'')) { def classMatches = zipTree(file).matching { include findMe }.files if (!classMatches.empty) { println "Found $findMe in $file ${classMatches.size()} time(s)" } } } } }