java.util.zip.ZipException: entrée en double pendant packageAllDebugClassesForMultiDex

118

Je ne sais pas ce que signifie cette erreur.

Execution failed for task ':excelSior:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: android/support/v4/util/TimeUtils.class

J'utilise actuellement android-support-v4.jarpour mes bibliothèques

dependencies {
    compile project(':addThisSDK')
    compile project(':centeredContentButton')
    compile project(':googleplayservices_lib')
    compile files('libs/adxtag2.4.6.jar')
    compile files('libs/android-support-v4.jar')
    compile files('libs/aws-android-sdk-1.7.1.1-debug.jar')
    compile files('libs/commons-lang-2.6.jar')
    compile files('libs/crittercism_v4_4_0_sdkonly.jar')
    compile files('libs/dd-plist.jar')
    compile files('libs/FiksuAndroidSDK_4.1.1.jar')
    compile files('libs/iqengines-sdk-barcode.jar')
    compile files('libs/irEventTracker-1.2.jar')
    compile files('libs/jolt-core-0.0.7.jar')
    compile files('libs/json-utils-0.0.7.jar')
    compile files('libs/jsoup-1.7.2.jar')
    compile files('libs/kooaba-api-v4-java.jar')
    compile 'com.android.support:multidex:1.0.0'
}

L'erreur n'apparaît pas pendant la synchronisation des gradins. Juste au moment où j'essaye d'exécuter l'application

Quel pourrait être le problème?

bman
la source
1
L'erreur survient lorsqu'une autre dépendance jar de la vôtre a la même classe, assurez-vous que vous n'avez pas ajouté de support jar à la fois en tant que dépendance gradle et jar. veuillez inclure la fermeture complète des dépendances dans la question.
pyus13
@ pyus13 merci. J'ai mis à jour la question. Ceci est toute ma liste de dépendances
bman
1
Vous avez 3 dépendances de module dans votre projet, assurez-vous donc que seule l'une d'entre elles a le support-v4 comme dépendance.
pyus13
s'il vous plaît voir ma réponse à: stackoverflow.com/questions/28168063/…
Tomer
Erreur: l'exécution a échoué pour la tâche «: Mulugu Astro: transformClassesWithJarMergingForDebug». > com.android.build.api.transform.TransformException: java.util.zip.ZipException: entrée en double: android / support / v4 / view / ViewPager $ MyAccessibilityDelegate.class
Harsha

Réponses:

64

Vous devez vérifier que vous avez inséré la bibliothèque v4 et compiler la bibliothèque? Vous ne devez pas répéter la bibliothèque dans votre application ou votre programme de dépendance.

supprimez la bibliothèque de répétition afin qu'il ne reste qu'un seul V4.

dans votre build.gradlefichier de répertoire d' application , ajoutez cette commande:

android{


    configurations {
        all*.exclude group: 'com.android.support', module: 'support-v4'
        all*.exclude group: 'com.android.support', module: 'support-annotations'
    }

}

ça marche pour moi! Tu peux l'essayer!

GeekHades
la source
19
Après avoir ajouté ces fragments, je ne peux pas obtenir le support de la v4, une idée?
Nisarg
@Nisarg m'arrive aussi.
CJ_COIMBRA
@Nisarg vous pouvez utiliser gradle pour recompiler le programme.
GeekHades
@NisargPouvez-vous s'il vous plaît m'aider à recompiler à nouveau, j'ai aussi le même problème que le vôtre, les fragments et le générateur de tâches ont cessé de se résoudre
Gaurav Arora
82

Vous avez probablement déjà résolu ce problème, mais pour ne pas rester sans réponse, essayez d'ajouter ceci à votre build.gradle:

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}
Zwebie
la source
4
J'ai ajouté la ligne de configuration mais Error:Execution failed for task ':Analyst:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: com/android/vending/billing/IInAppBillingService$Stub$Proxy.classcela se voit toujours .
biswajitGhosh
2
Comment avez-vous résolu le problème?
Arslan Anwar
9
y a-t-il une bonne solution.j'obtiens le même problème java.util.zip.ZipException: entrée en double: com / google / gson / annotations / Expose.class
RamBabu Pudari
2
Erreur: (5, 30) erreur: le package android.support.v4.app n'existe pas Obtenir cette erreur après avoir ajouté votre réponse
Ankit Thakkar
1
Où est-ce censé aller, je suis nouveau dans le classement et il y a 5 fichiers build.gradle dans mon projet actuel, aucun d'entre configurationseux ne contient et il ne semble pas avoir d'importance où je l'ai mis, j'obtiens des erreurs comme ne peut pas résoudre le symbole 'exclure' ou ne peut pas résoudre le symbole 'tout'
JStephen
25

Je suis également tombé sur ce genre de problème lors de la réimportation d'un ancien projet d'éclipse. Il s'est produit une ancienne dépendance en tant que fichier jar dans le projet.

il suffit de supprimer

compiler fileTree (dir: 'libs', inclure: '* .jar')

dans le fichier gradle

et ajoutez une dépendance dans le fichier gradle.

Ça marche pour moi ..

Paraneetharan Saravanaperumal
la source
Cette erreur s'est produite lors de l'importation de l'ancien projet eclipse, désolé, en fait, j'ai supprimé une partie de la bibliothèque de référence et ajouté la même dépendance dans le fichier gradle.
Paraneetharan Saravanaperumal
1
A travaillé pour moi (également importation de l'ancienne configuration d'éclipse). Après cela, nettoyer et reconstruire était nécessaire.
Paco Abato
17
Pourquoi devrais-je faire confiance à un nommé Sauron?
matthias_b_nz
Arrêté cette erreur spécifique, mais en a causé des dizaines d'autres. Parfois, vous avez besoin de ces dépendances. Aussi étrange que cela puisse paraître, Sauron avait raison cette fois.
SMBiggs
1
En ajoutant explicitement vos dépendances, une par une, vous découvrirez probablement une .jarbibliothèque en double que vous incluez deux fois. Ne l'utilisez jamais compile fileTree(...), il cache trop d'erreurs évidentes.
Joshua Pinter
13

Dans mon cas, l'erreur "entrée en double" mentionnée est survenue après la configurationmultiDexEnable=true dans build.gradle.

Afin de résoudre complètement l'erreur, jetez tout d'abord un coup d'œil à Configurer les applications avec plus de 64 000 méthodes. 000 (en particulier «Configurer votre application pour Multidex avec Gradle»).

En outre, recherchez les occurrences de la classe qui provoquent l'erreur "entrée en double" en utilisant ctrl + n dans Android Studio. Déterminez le module et la dépendance contenant le doublon et excluez-le de la construction, par exemple:

compile ('org.roboguice:roboguice:2.0') {
    exclude module: 'support-v4'
}

J'ai dû essayer plusieurs étiquettes de module jusqu'à ce que cela fonctionne. L'exclusion de "support-v4" résout les problèmes liés à "java.util.zip.ZipException: entrée en double: android / support / v4 / *"

b00n12
la source
9

Je crois comprendre qu'il existe des références en double à la même API (probablement des numéros de version différents). Il devrait être raisonnablement facile de déboguer lors de la construction à partir de la ligne de commande.

Essayez ./gradlew yourBuildVariantName --debugdepuis la ligne de commande.

L'élément incriminé sera le premier échec. Un exemple pourrait ressembler à:

14:32:29.171 [INFO] [org.gradle.api.Task] INPUT: /Users/mydir/Documents/androidApp/BaseApp/build/intermediates/exploded-aar/theOffendingAAR/libs/google-play-services.jar

14:32:29.171 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':BaseApp:packageAllyourBuildVariantNameClassesForMultiDex'

14:32:29.172 [LIFECYCLE] [class org.gradle.TaskExecutionLogger] :BaseApp:packageAllyourBuildVariantNameClassesForMultiDex FAILED'

Dans le cas ci-dessus, le fichier aar que j'avais inclus dans mon répertoire libs (theOffendingAAR) incluait le fichier jar des services Google Play (oui le tout. Oui je sais.) Tandis que mon fichier de construction BaseApp utilisait les services de localisation:

compile 'com.google.android.gms:play-services-location:6.5.87'

Vous pouvez supprimer en toute sécurité l'élément incriminé de votre (vos) fichier (s) de construction, le nettoyer et le reconstruire (répétez si nécessaire).

user01000101
la source
1
Alors que faire si j'ai besoin de la bibliothèque incriminée?
Janusz
1
Cela m'a aidé à retrouver la bibliothèque incriminée :)
speedynomads
1
Cela n'aide pas ... sur la suppression de la bibliothèque incriminée, le module ne parvient pas à compiler
Utsav Gupta
9

vérifiez les versions de vos dépendances, vous devez avoir des versions compatibles, faites attention spécialement aux packages com.google, doivent avoir la même version comme:

compile 'com.google.android.gms:play-services:8.3.0'
compile 'com.google.android.gms:play-services-maps:8.3.0'

Les deux sont 8.3.0, si vous avez une autre version, la compilation lèvera cette exception.

Codage ninja
la source
Merci l'homme, fonctionne parfaitement, j'ai trois services google play différents compiler 'com.google.android.gms: play-services-analytics: 8.4.0' compile 'com.google.android.gms: play-services-ads: 8.3 .0 'compile' com.google.android.gms: play-services-plus: 8.4.0 '
Samadhan Medge
5

Supprimez simplement votre fichier Jar des dépendances gardle.project en tant que v7 et exécutez votre projet

sanjay kumar thakur
la source
Cela fonctionne pour moi, supprimez simplement les "fichiers de compilation ('libs / android-support-v13.jar')" des "dépendances" de mon "build.gradle (Module: app)". Pour référence, vous obtenez cette erreur après l'importation de l'éclipse du formulaire de projet dans Android Studio.
rafaellorey
5

Pour l'erreur Expose.class ie

java.util.zip.ZipException: entrée en double: com / google / gson / annotations / Expose.class

utilisez le code ci-dessous

configurations {
    all*.exclude  module: 'gson'
}
Laveen Balakrishna
la source
11
Le PO n'a rien dit gson.
IgorGanapolsky
3

découvrez que la bibliothèque dépend du support v4 et excluez-la.

le code dans build.gradleest comme ceci:

androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.1') {
    // http://stackoverflow.com/a/30931887/5210
    exclude group: 'com.android.support', module: 'appcompat'
    exclude group: 'com.android.support', module: 'support-v4'
    exclude module: 'recyclerview-v7'
}

Dans ma situation, la lib 'espresso' a un pot appelé support-v4 et dans mon projet 'app' ont le même support-v4, excluez le support-v4 lors de l'importation d'espresso.

PS: il semble compile projectne peut pas fonctionner avec leexclude

Ninja
la source
1

C'est parce que vous avez ajouté une bibliothèque et donné sa dépendance à un module plus d'une fois.

Dans mon cas, j'avais ajouté une bibliothèque en tant que module et en tant que dépendance gradle à la fois.

La suppression d'une source d'ajout de bibliothèque (j'ai supprimé la dépendance gradle) a résolu mon problème.

Rahul Rastogi
la source
Sinon, ce problème a été résolu pour moi en supprimant le fichier jar du répertoire libs et en conservant la dépendance gradle.
droideckar
Ouais! La suppression d'une seule source résoudra le problème. Garder une dépendance graduelle est une bonne chose.
Rahul Rastogi
0

Pour Error: Execution failed for task ': app: transformClassesWithJarMergingForDebug' com.android.build.api.transform.TransformException java.util.zip.ZipException entrée dupliquée com / google / gson / annotations / Expose.class

Voici ce que j'ai fait:

1) Supprimez le fichier gson-2.5.jar. 2) configurations {tous les modules * .exclude: 'gson-2.5'}

LEMUEL ADANE
la source
La question n'était pas sur Gson
OneCricketeer
0

J'ai rencontré ce problème car j'ai copié manuellement le fichier jar dans les bibliothèques et mentionné la dépendance dans le fichier gradle. Vous vérifiez également la structure de votre projet, si le même fichier JAR est copié dans un autre dossier comme libs ou dans le dossier du projet.

Ashish Rawat
la source
0

J'ai eu le même problème après la mise à niveau du SDK Android. J'ai pu exécuter l'application dans le buildToolsVersion '23.0.1', j'ai eu la même erreur lorsque je suis passé àbuildToolsVersion '24.0.3'

J'ai résolu le problème en mettant à jour ma version java de 1.7 à 1.8 avec compileSdkVersion 24

Muhamed Riyas M
la source
0

Ce problème m'a coûté une journée entière. J'ai finalement rétrogradé la version de la bibliothèque firebase-ui de 2.0.0 à 1.2.0 et ajouté le code suivant dans le fichier build.gradle au niveau du projet:

allprojects {
    repositories {
        jcenter()

        // Add the following code to your project level build.gradle
        maven {
            url 'https://maven.fabric.io/public'
        }
    }
}
Darush
la source
1
La version de l'interface utilisateur de Firebase dépend de la version de Firebase que vous avez réellement compilée
OneCricketeer
0

J'ai aussi le problème parce que j'ai compilé 'com.android.support:appcompat-v7:24.0.0-alpha1' mais j'ai ajouté la compilation de la bibliothèque de recyclage 'com.android.support:recyclerview-v7:24.0.2' .. J'ai changé la version comme identique à la compatibilité comme (24.0.2 au lieu de 24.0.0).

j'ai eu la réponse ... peut-être que cela aidera quelqu'un.

S HemaNandhini
la source
0

Dans mon cas, l'erreur "entrée en double" mentionnée est survenue après la configuration de multiDexEnable = true dans le build.gradle.

et l'erreur exacte que j'obtenais était ci-dessous:

Error:Execution failed for task 
':android:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: 
java.util.zip.ZipException: duplicate entry: 
com/google/android/gms/internal/zzqx.class

Donc, la première chose que je recherche pour la classe qui provoque une erreur "d'entrée en double" en utilisant ctrl + n dans Android Studio et j'ai recherché com / google / android / gms / internal / zzqx.class, puis il montrait 2 entrées pour la classe gms avec une version 8.4.0 et 1 avec la version 11.6.0.

Pour le réparer, j'ai fait à la fois pour utiliser 11.6.0 et c'était un exemple fixe

plus tôt

    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:8.4.0"
    compile "com.google.android.gms:play-services-ads:11.6.0"

Après

    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:11.6.0"
    compile "com.google.android.gms:play-services-ads:11.6.0"

Reconstruction corrigée.

paarth batra
la source
0

Dans mon cas, l'erreur exacte était ci-dessous

': android: transformClassesWithJarMergingForDebug'.

com.android.build.api.transform.TransformException: java.util.zip.ZipException: entrée en double: com / google / android / gms / internal / zzqx.class

J'utilisais une autre version de google apis ie dans un fichier gradle de modules

if (!project.hasProperty('gms_library_version')) {
        ext.gms_library_version = '8.6.0'
   }

cependant dans d'autres modules version 11.6.0 comme ci-dessous

   compile "com.google.android.gms:play-services-ads:11.6.0"
    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:11.6.0"

Cependant, pour trouver cela, j'ai fait un ctrl + n dans le studio Android et j'ai entré le nom de classe zzqx.class, puis il a affiché 2 fichiers jar extraits pour cette classe, puis j'ai compris que quelque part j'utilise la version 8.6.0. Lors du changement de 8.6.0 à 11.6.0 et de la reconstruction du projet, le problème a été résolu.

J'espère que cela t'aides .

Plus d'informations à ce sujet ici https://www.versionpb.com/tutorials/step-step-tutorials-libgdx-basic-setup-libgdx/implementing-google-play-services-leaderboards-in-libgdx/

paarth batra
la source
0

Pour moi, quelque chose de similaire s'est produit quand j'avais accidentellement ajouté

apply plugin: 'kotlin-android'

à mon module de bibliothèque Android. La suppression de la ligne résout le problème.

A. Steenbergen
la source
0

J'ai essayé toutes les solutions ci-dessus mais ne fonctionne pas pour moi. J'ai essayé les bibliothèques de mise à jour par goto project structure> app. Et ça fonctionne pour moi! J'espère que cette réponse sera utile à quelqu'un.

Pooja
la source
-1

Essaye ça:

android {
configurations {
        all*.exclude  module: 'PhotoView'  //去除重复依赖库
    }
}
纯洁 的 坏蛋
la source
Cette question concerne la bibliothèque de support v4, pas PhotoView
OneCricketeer
-1

effacez simplement android / support / v4 / util / TimeUtils.class

jas-chu
la source
Jesus Christ no
sfratini