java.util.zip.ZipException: voce duplicata durante packageAllDebugClassesForMultiDex


117

Non sono sicuro di cosa significhi questo errore.

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

Attualmente sto usando android-support-v4.jarper le mie biblioteche

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'errore non viene visualizzato durante la sincronizzazione gradle. Proprio quando provo a eseguire l'applicazione

Quale potrebbe essere il problema?


1
L'errore arriva quando qualsiasi altra tua dipendenza jar ha la stessa classe, assicurati di non aver aggiunto il supporto jar sia come gradle che come dipendenza jar. si prega di includere la chiusura completa delle dipendenze nella domanda.
pyus13

@ pyus13 grazie. Ho aggiornato la domanda. Questo è il mio intero elenco delle dipendenze
bman

1
Hai 3 dipendenze del modulo nel tuo progetto, quindi assicurati che solo una di tutte abbia il supporto-v4 come dipendenza.
pyus13

si prega di vedere la mia risposta su: stackoverflow.com/questions/28168063/…
Tomer

Errore: esecuzione non riuscita per l'attività ": Mulugu Astro: transformClassesWithJarMergingForDebug". > com.android.build.api.transform.TransformException: java.util.zip.ZipException: voce duplicata: android / support / v4 / view / ViewPager $ MyAccessibilityDelegate.class
Harsha

Risposte:


64

Devi verificare di aver inserito la libreria v4 e compilare la libreria? Non devi ripetere la libreria nella tua app o nel tuo programma di dipendenza.

eliminare la libreria di ripetizione in modo che rimanga solo una V4.

nel build.gradlefile dir della tua app aggiungi questo comando:

android{


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

}

per me funziona! Puoi provarlo!


19
Dopo aver aggiunto questi frammenti non è possibile ottenere il supporto di v4, qualche idea?
Nisarg

@Nisarg succede anche a me.
CJ_COIMBRA

@ Nisarg puoi usare gradle ricompilare il programma.
GeekHades

@Nisarg, puoi aiutarmi a ricompilare di nuovo, anch'io ho lo stesso problema del tuo, frammenti e taskstackbuilder hanno smesso di risolversi
Gaurav Arora

82

Probabilmente l'hai risolto ormai, ma solo per non rimanere senza risposta, prova ad aggiungere questo al tuo build.gradle:

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

4
Ho aggiunto la riga delle configurazioni ma continua a Error:Execution failed for task ':Analyst:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: com/android/vending/billing/IInAppBillingService$Stub$Proxy.classessere visualizzata.
biswajitGhosh

2
Come hai risolto il problema?
Arslan Anwar

9
c'è una soluzione giusta. Sto riscontrando lo stesso problema java.util.zip.ZipException: voce duplicata: com / google / gson / annotations / Expose.class
RamBabu Pudari

2
Errore: (5, 30) errore: il pacchetto android.support.v4.app non esiste Ricezione di questo errore dopo aver aggiunto la risposta
Ankit Thakkar

1
Dove dovrebbe andare, sono nuovo a gradle e ci sono 5 file build.gradle nel mio progetto attuale, nessuno di loro ha configurationsin loro e non sembra importare dove lo metto, ottengo errori come non posso risolve il simbolo "escludi" o non può risolvere il simbolo "tutto"
JStephen

25

Ho anche riscontrato questo tipo di problema durante la reimportazione del vecchio progetto Eclipse. Si è verificata una vecchia dipendenza come file jar nel progetto.

basta rimuovere

compila fileTree (dir: 'libs', include: '* .jar')

in un file gradle

e aggiungi la dipendenza nel file gradle.

Per me funziona ..


Questo errore si è verificato durante l'importazione del vecchio progetto eclipse mi dispiace, in realtà ho rimosso parte della libreria di riferimento e ho aggiunto la stessa dipendenza nel file gradle.
Paraneetharan Saravanaperumal

1
Ha funzionato per me (importando anche dalla vecchia configurazione di eclipse). Dopo di che è stato necessario pulire e ricostruire.
Paco Abato

17
Perché dovrei fidarmi di uno di nome Sauron?
matthias_b_nz

Ha bloccato questo errore specifico, ma ne ha provocati dozzine. A volte hai bisogno di quelle dipendenze. Per quanto strano possa sembrare, Sauron aveva ragione questa volta.
SMBiggs

1
Aggiungendo esplicitamente le tue dipendenze, una per una, probabilmente scoprirai una .jarlibreria duplicata che includi due volte. Non usare mai compile fileTree(...), nasconde troppi errori evidenti.
Joshua Pinter

13

Nel mio caso il citato errore di "voce duplicata" si è verificato dopo l'impostazionemultiDexEnable=true in build.gradle.

Per risolvere completamente l'errore, prima di tutto dai un'occhiata a Configura app con metodi oltre 64K (in particolare "Configurazione della tua app per Multidex con Gradle").

Inoltre, cerca le occorrenze della classe che causa l'errore "voce duplicata" utilizzando ctrl + n in Android Studio. Determina il modulo e la dipendenza che contiene il duplicato ed escludilo dalla compilazione, ad esempio:

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

Ho dovuto provare più etichette di modulo finché non ha funzionato. L'esclusione di "support-v4" risolve i problemi relativi a "java.util.zip.ZipException: voce duplicata: android / support / v4 / *"


9

La mia comprensione è che ci sono riferimenti duplicati alla stessa API (probabilmente numeri di versione diversi). Dovrebbe essere ragionevolmente facile eseguire il debug durante la compilazione dalla riga di comando.

Prova ./gradlew yourBuildVariantName --debugdalla riga di comando.

L'articolo incriminato sarà il primo guasto. Un esempio potrebbe essere:

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'

Nel caso sopra, il file aar che avevo incluso nella mia directory libs (theOffendingAAR) includeva il file jar di Google Play Services (sì, tutto. Sì, lo so.) Mentre il mio file di build BaseApp utilizzava i servizi di localizzazione:

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

È possibile rimuovere in modo sicuro l'elemento offensivo dai file di build, pulire e ricostruire (ripetere se necessario).


1
E se avessi bisogno della biblioteca incriminata?
Janusz

1
Questo mi ha aiutato a rintracciare la libreria incriminata :)
speedynomads

1
Questo non aiuta .. alla rimozione della libreria incriminata il modulo non riesce a compilare
Utsav Gupta

9

controlla le versioni delle tue dipendenze, devi avere versioni compatibili che prestano particolare attenzione ai pacchetti com.google, devono avere la stessa versione come:

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

Entrambi sono 8.3.0, se hai un'altra versione la compilazione genererà quell'eccezione.


Grazie amico, funziona perfettamente, ho tre diversi servizi di Google Play Compile "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

Semplice Rimuovi il tuo file Jar dalle dipendenze gardle.project come v7 ed esegui il tuo progetto


Per me funziona, rimuovi semplicemente "compile files ('libs / android-support-v13.jar')" dalle "dipendenze" nel mio "build.gradle (Module: app)". Per riferimento, ottieni questo errore dopo aver importato il modulo di progetto eclipse in Android Studio.
rafaellorey

5

Per Expose.class Error ie

java.util.zip.ZipException: voce duplicata: com / google / gson / annotations / Expose.class

usa il codice sottostante

configurations {
    all*.exclude  module: 'gson'
}

11
L'OP non ha detto nulla gson.
IgorGanapolsky

3

scoprire che la libreria dipende dal supporto v4 ed escluderla.

il codice in build.gradleè così:

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'
}

Nella mia situazione, il lib 'espresso' ha un barattolo chiamato support-v4 e nel mio progetto 'app' ha lo stesso supporto-v4, esclude il supporto-v4 quando importa l'espresso.

PS: sembra compile projectnon possa funzionare con ilexclude


1

Questo perché hai aggiunto una libreria e hai dato la sua dipendenza da un modulo più di una volta.

Nel mio caso, avevo aggiunto una libreria sia come modulo che come dipendenza gradle.

La rimozione di una fonte di aggiunta della libreria (ho rimosso la dipendenza gradle) ha risolto il mio problema.


in alternativa, questo problema è stato risolto per me rimuovendo il jar dalla directory libs e mantenendo la dipendenza gradle.
Droideckar

Yeh! La rimozione di una singola fonte risolverà il problema. Mantenere una dipendenza graduale è positivo.
Rahul Rastogi

0

Per errore: esecuzione non riuscita per l'attività ": app: transformClassesWithJarMergingForDebug" com.android.build.api.transform.TransformException java.util.zip.ZipException duplicate entry com / google / gson / annotations / Expose.class

Ecco cosa ho fatto:

1) Elimina il file gson-2.5.jar. 2) configurazioni {all * .exclude module: 'gson-2.5'}


La domanda non riguardava Gson
OneCricketeer

0

Ho affrontato questo problema poiché ho copiato manualmente il jar nelle librerie e ho menzionato la dipendenza nel file gradle. Controlla anche nella struttura del tuo progetto, se lo stesso file jar viene copiato in qualsiasi altra cartella come libs o nella cartella del progetto.


0

Ho avuto lo stesso problema dopo aver aggiornato l'SDK di Android. Sono stato in grado di eseguire l'applicazione in buildToolsVersion '23.0.1', ho ricevuto lo stesso errore quando sono passato abuildToolsVersion '24.0.3'

Ho risolto il problema aggiornando la mia versione java da 1.7 a 1.8 con compileSdkVersion 24


0

Questo problema mi è costato un giorno intero. Alla fine ho effettuato il downgrade della versione della libreria firebase-ui da 2.0.0 a 1.2.0 e ho aggiunto il seguente codice all'interno del file build.gradle a livello di progetto:

allprojects {
    repositories {
        jcenter()

        // Add the following code to your project level build.gradle
        maven {
            url 'https://maven.fabric.io/public'
        }
    }
}

1
La versione dell'interfaccia utente di Firebase dipende dalla versione di Firebase effettivamente compilata
OneCricketeer

0

Ho anche il problema perché ho compilato "com.android.support:appcompat-v7:24.0.0-alpha1" ma ho aggiunto recyclerview liberary compile "com.android.support:recyclerview-v7:24.0.2" .. Ho cambiato la versione come la stessa di compat come (24.0.2 invece di 24.0.0).

ho la risposta..può essere di aiuto per qualcuno.


0

Nel mio caso il citato errore di "voce duplicata" si è verificato dopo l'impostazione di multiDexEnable = true nel build.gradle.

e l'errore esatto che stavo ottenendo era di seguito:

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

Quindi per prima cosa cerco la classe che causa l'errore di "voce duplicata" utilizzando ctrl + n in Android Studio e ho cercato com / google / android / gms / internal / zzqx.class e poi mostrava 2 voci per la classe gms con una versione 8.4.0 e 1 con la versione 11.6.0.

Per risolverlo ho fatto utilizzare entrambi 11.6.0 ed è stato corretto esempio

prima

    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"

Dopo

    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"

Ricostruzione risolta.


0

Nel mio caso l'errore esatto era di seguito

': Android: transformClassesWithJarMergingForDebug'.

com.android.build.api.transform.TransformException: java.util.zip.ZipException: voce duplicata: com / google / android / gms / internal / zzqx.class

Stavo usando un'altra versione di Google API cioè in un file gradle dei moduli

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

tuttavia in altri moduli versione 11.6.0 come di seguito

   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"

Tuttavia per trovarlo ho fatto un ctrl + n in Android Studio e ho inserito il nome della classe zzqx.class e poi ha mostrato 2 file jar estratti per questa classe e poi ho capito che da qualche parte sto usando la versione 8.6.0. Cambiando 8.6.0 in 11.6.0 e ricostruendo il progetto il problema è stato risolto.

Spero che questo ti aiuti .

Maggiori informazioni su questo qui https://www.versionpb.com/tutorials/step-step-tutorials-libgdx-basic-setup-libgdx/implementing-google-play-services-leaderboards-in-libgdx/


0

Per me è successo qualcosa di simile quando ho aggiunto accidentalmente

apply plugin: 'kotlin-android'

al mio modulo libreria Android. La rimozione della linea risolve il problema.


0

Ho provato tutte le soluzioni di cui sopra ma non ha funzionato per me. Ho provato ad aggiornare le librerie da goto struttura del progetto> app. E funziona per me! Spero che questa risposta sia utile a qualcuno.


-1

Prova questo:

android {
configurations {
        all*.exclude  module: 'PhotoView'  //去除重复依赖库
    }
}

Questa domanda riguarda la libreria di supporto v4, non PhotoView
OneCricketeer

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.