java.util.zip.ZipException: entrada duplicada durante packageAllDebugClassesForMultiDex


117

Não tenho certeza do que esse erro significa.

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

Estou usando atualmente android-support-v4.jarpara minhas bibliotecas

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

O erro não aparece durante a sincronização do Gradle. Apenas quando tento executar o aplicativo

Qual pode ser o problema?


1
O erro ocorre quando qualquer outra dependência jar sua tem a mesma classe, certifique-se de não ter adicionado jar de suporte como dependência gradle e jar. inclua o encerramento completo da dependência na pergunta.
pyus13

@ pyus13 obrigado. Eu atualizei a pergunta. Esta é toda a minha lista de dependências
bman

1
Você tem 3 dependências de módulo em seu projeto, portanto, certifique-se de que apenas uma delas tenha o support-v4 como dependência.
pyus13

por favor, veja minha resposta em: stackoverflow.com/questions/28168063/…
Tomer

Erro: Falha na execução da tarefa ': Mulugu Astro: transformClassesWithJarMergingForDebug'. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: entrada duplicada: android / support / v4 / view / ViewPager $ MyAccessibilityDelegate.class
Harsha

Respostas:


64

Você precisa verificar se inseriu a biblioteca v4 e a biblioteca de compilação? Você não deve repetir a biblioteca em seu aplicativo ou programa de dependência.

exclua a biblioteca de repetição para que apenas um V4 permaneça.

no build.gradlearquivo dir do seu aplicativo, adicione este comando:

android{


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

}

funciona para mim! Você pode experimentá-lo!


19
Depois de adicionar esses fragmentos não consigo obter suporte da v4, alguma ideia?
Nisarg

@Nisarg também acontece comigo.
CJ_COIMBRA

@Nisarg você pode usar o gradle para recompilar o programa.
GeekHades

@Nisarg Você pode me ajudar a recompilar novamente, eu também tenho o mesmo problema que o seu, fragmentos e taskstackbuilder pararam de resolver
Gaurav Arora

82

Você provavelmente já corrigiu isso agora, mas só para não ficar sem resposta, tente adicionar isso ao seu build.gradle:

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

4
Eu adicionei a linha de configurações, mas ainda Error:Execution failed for task ':Analyst:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: com/android/vending/billing/IInAppBillingService$Stub$Proxy.classmostra.
biswajitGhosh

2
Como você corrigiu o problema?
Arslan Anwar

9
existe alguma solução certa. Estou recebendo o mesmo problema java.util.zip.ZipException: entrada duplicada: com / google / gson / annotations / Expose.class
RamBabu Pudari

2
Erro: (5, 30) erro: o pacote android.support.v4.app não existe Obtendo este erro depois de adicionar sua resposta
Ankit Thakkar,

1
Para onde isso deveria ir, sou novo no gradle e há 5 arquivos build.gradle no meu projeto atual, nenhum deles contém e configurationsparece que não importa onde eu coloquei, eu recebo erros do tipo não consigo resolver o símbolo 'excluir' ou não pode resolver o símbolo 'todos'
JStephen

25

Eu também me deparei com esse tipo de problema ao reimportar o projeto antigo do eclipse. Ocorreu alguma dependência antiga como arquivo jar no projeto.

apenas remova

compilar fileTree (dir: 'libs', incluir: '* .jar')

no arquivo gradle

e adicionar dependência no arquivo gradle.

Funciona para mim ..


Este erro ocorreu ao importar o projeto antigo do eclipse, desculpe, na verdade, removi parte da biblioteca de referência e adicionei a mesma dependência no arquivo gradle.
Paraneetharan Saravanaperumal

1
Funcionou para mim (também importando da configuração do eclipse antigo). Depois disso, foi necessário limpar e reconstruir.
Paco Abato

17
Por que eu deveria confiar em alguém chamado Sauron?
matthias_b_nz

Deteve esse erro específico, mas causou dezenas de outros. Às vezes, você precisa dessas dependências. Por mais estranho que isso possa parecer, Sauron estava certo dessa vez.
SMBiggs de

1
Ao adicionar suas dependências explicitamente, uma por uma, você provavelmente descobrirá uma .jarbiblioteca duplicada que está incluindo duas vezes. Nunca use compile fileTree(...), ele esconde muitos erros óbvios.
Joshua Pinter

13

No meu caso, o erro de "entrada duplicada" mencionado surgiu após a configuração multiDexEnable=trueno build.gradle.

Para resolver totalmente o erro, primeiro de tudo, dê uma olhada em Configurar aplicativos com mais de 64 mil métodos (especialmente "Configurando seu aplicativo para Multidex com Gradle").

Além disso, pesquise as ocorrências da classe que causa o erro de "entrada duplicada" usando ctrl + n no Android Studio. Determine o módulo e a dependência que contém a duplicata e exclua-a da compilação, por exemplo:

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

Tive que experimentar vários rótulos de módulo até que funcionasse. Excluir "support-v4" resolve problemas relacionados a "java.util.zip.ZipException: entrada duplicada: android / support / v4 / *"


9

Meu entendimento é que existem referências duplicadas à mesma API (números de versão provavelmente diferentes). Deve ser razoavelmente fácil de depurar ao compilar a partir da linha de comando.

Tente ./gradlew yourBuildVariantName --debugna linha de comando.

O item ofensivo será a primeira falha. Um exemplo pode ser assim:

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'

No caso acima, o arquivo aar que incluí em meu diretório libs (theOffendingAAR) incluía o arquivo jar do Google Play Services (sim, tudo. Sim, eu sei.), Enquanto meu arquivo de compilação BaseApp utilizava serviços de localização:

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

Você pode remover com segurança o item ofensivo de seu (s) arquivo (s) de construção, limpar e reconstruir (repetir se necessário).


1
E daí se eu precisar da biblioteca ofensiva?
Janusz de

1
Isso me ajudou a rastrear a biblioteca ofensiva :)
speedynomads

1
Isso não ajuda ... sobre a remoção da biblioteca ofensiva que o módulo não consegue compilar
Utsav Gupta

9

verifique as versões das suas dependências, você deve ter versões compatíveis preste atenção especialmente aos pacotes com.google, deve ter a mesma versão como:

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

Ambos são 8.3.0, se você tiver outra versão, a compilação lançará essa exceção.


Obrigado cara, Funcionando perfeitamente, tenho três serviços diferentes do Google Play compilados 'com.google.android.gms: play-services-analytics: 8.4.0' compile 'com.google.android.gms: play-services-ads: 8.3 .0 'compilar' com.google.android.gms: play-services-plus: 8.4.0 '
Samadhan Medge,

5

Simplesmente remova seu arquivo Jar das dependências gardle.project como v7 e execute seu projeto


Isso funciona para mim, simplesmente remova "arquivos de compilação ('libs / android-support-v13.jar')" de "dependências" no meu "build.gradle (Módulo: app)". Para referência, obtenha este erro após importar o eclipse do projeto para o Android Studio.
Rafaellorey

5

Para Expose.class Error ie

java.util.zip.ZipException: entrada duplicada: com / google / gson / annotations / Expose.class

use o código abaixo

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

11
O OP não disse nada sobre gson.
IgorGanapolsky de

3

descubra que a lib depende do suporte v4 e exclua-a.

o código build.gradleé assim:

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

Na minha situação, o lib 'espresso' tem um jar chamado support-v4 e no meu projeto 'app' tem o mesmo support-v4, exclui o support-v4 ao importar o espresso.

PS: parece compile projectque não pode funcionar com oexclude


1

Isso ocorre porque você adicionou uma biblioteca e deu sua dependência de um módulo mais de uma vez.

No meu caso, adicionei uma biblioteca como módulo e como dependência do gradle.

Remover uma fonte de adição de biblioteca (removi a dependência do Gradle) resolveu meu problema.


como alternativa, esse problema foi corrigido para mim removendo o jar do diretório libs e mantendo a dependência do gradle.
droideckar 01 de

Sim! Remover qualquer fonte solucionará o problema. Manter a dependência do gradle é bom.
Rahul Rastogi

0

Para erro: falha na execução da tarefa ': app: transformClassesWithJarMergingForDebug' com.android.build.api.transform.TransformException java.util.zip.ZipException entrada duplicada com / google / gson / annotations / Expose.class

Aqui está o que eu fiz:

1) Exclua o arquivo gson-2.5.jar. 2) configurações {all * .exclude module: 'gson-2.5'}


A pergunta não era sobre Gson
OneCricketeer

0

Enfrentei esse problema porque copiei manualmente o jar nas bibliotecas e também mencionei a dependência no arquivo gradle. Você também verifica na estrutura do projeto, se o mesmo arquivo jar é copiado em qualquer outra pasta como libs ou na pasta do projeto.


0

Eu tive o mesmo problema depois de atualizar o SDK do Android. Consegui executar o aplicativo no buildToolsVersion '23.0.1', obtive o mesmo erro quando mudei parabuildToolsVersion '24.0.3'

Resolvi o problema atualizando minha versão java de 1.7 para 1.8 com compileSdkVersion 24


0

Esse problema me custou um dia inteiro. Finalmente fiz o downgrade da versão da biblioteca firebase-ui de 2.0.0 para 1.2.0 e adicionei o seguinte código dentro do arquivo build.gradle de nível de projeto:

allprojects {
    repositories {
        jcenter()

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

1
A versão da IU do Firebase depende de qual versão do Firebase você realmente compilou
OneCricketeer

0

Eu também tenho o problema porque compilei 'com.android.support:appcompat-v7:24.0.0-alpha1', mas adicionei recyclerview liberary compile 'com.android.support:recyclerview-v7:24.0.2' .. Eu mudei a versão para igual a compat like (24.0.2 em vez de 24.0.0).

Eu tenho a resposta ... pode ser que ajude alguém.


0

No meu caso, o erro de "entrada duplicada" mencionado surgiu após definirmultiDexEnable = true no build.gradle.

e o erro exato que eu estava recebendo estava abaixo:

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

Então, a primeira coisa que eu procuro por classe que causa o erro de "entrada duplicada" usando ctrl + n no Android Studio e pesquisei por com / google / android / gms / internal / zzqx.class e estava mostrando 2 entradas para classe gms com uma versão 8.4.0 e 1 com a versão 11.6.0.

Para consertar eu fiz ambos para usar 11.6.0 e foi um exemplo fixo

mais cedo

    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"

Depois de

    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"

Reconstrução corrigida.


0

No meu caso, o erro exato estava abaixo

': android: transformClassesWithJarMergingForDebug'.

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

Eu estava usando outra versão do google apis, ou seja, em um arquivo gradle de módulos

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

no entanto, em outros módulos versão 11.6.0 conforme abaixo

   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"

No entanto, para encontrar isso, fiz um ctrl + n no android studio e digitei o nome da classe zzqx.class e, em seguida, ele exibiu 2 arquivos jar sendo puxados para esta classe e então entendi que em algum lugar estou usando a versão 8.6.0. Ao mudar 8.6.0 para 11.6.0 e reconstruir o projeto, o problema foi corrigido.

Espero que isto ajude .

Mais sobre isso aqui https://www.versionpb.com/tutorials/step-step-tutorials-libgdx-basic-setup-libgdx/implementing-google-play-services-leaderboards-in-libgdx/


0

Para mim, algo semelhante aconteceu quando eu acidentalmente adicionei

apply plugin: 'kotlin-android'

para o meu módulo de biblioteca android. Remover a linha corrige o problema.


0

Tentei todas as soluções acima, mas não funcionou para mim. Eu tentei atualizar as bibliotecas por goto project structure> app. E funciona para mim! Espero que esta resposta seja útil para alguém.


-1

Experimente isto:

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

Esta pergunta é sobre a biblioteca de suporte v4, não o PhotoView
OneCricketeer

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.