android - tools - multidex release notes




java.util.zip.ZipException: entrada duplicada durante packageAllDebugClassesForMultiDex (14)

Não sei ao certo o que esse erro significa.

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

Atualmente, estou usando o android-support-v4.jar para 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 poderia ser o problema?


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

allprojects {
    repositories {
        jcenter()

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

Eu enfrentei esse problema, pois copiei manualmente o jar nas bibliotecas e 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.


Eu também tenho o problema por causa da compilação 'com.android.support:appcompat-v7:24.0.0-alpha1', mas adicionei a compilação libertadora da reciclerview 'com.android.support:recyclerview-v7:24.0.2' .. Eu mudei a versão da mesma forma que compat (24.0.2 em vez de 24.0.0).

Eu tenho a resposta .. pode ser que vai ajudar alguém.


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


Isso ocorre porque você adicionou uma biblioteca e dependeu de um módulo mais de uma vez.

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

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


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

Tente ./gradlew yourBuildVariantName --debug na linha de comando.

O item incorreto será a primeira falha. Um exemplo pode parecer com:

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 eu incluí no meu diretório libs (theOffendingAAR) incluía o arquivo jar do Google Play Services (sim, a coisa toda. Sim, eu sei.) Enquanto meu arquivo de compilação BaseApp utilizava os serviços de localização:

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

Você pode remover com segurança o item incorreto do (s) arquivo (s) de compilação, limpar e reconstruir (repita se necessário).


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

Para resolver completamente o erro, verifique primeiro o tópico Configurar aplicativos com mais de 64 mil métodos (especialmente "Configurando seu aplicativo para Multidex com Gradle").

Além disso, pesquise ocorrências da classe que causa o erro "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'
}

Eu tive que tentar várias etiquetas de módulos até que funcionasse. A exclusão de "support-v4" resolve problemas relacionados a "java.util.zip.ZipException: entrada duplicada: android / support / v4 / *"


No meu caso, o erro mencionado "entrada duplicada" surgiu após a configuraçãomultiDexEnable = true no build.gradle.

e 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 pesquisei na classe que causa o erro "entrada duplicada" usando ctrl + n no Android Studio e procurei com / google / android / gms / internal / zzqx.class e depois estava mostrando 2 entradas para a classe gms com uma versão 8.4.0 e 1 com versão 11.6.0.

Para corrigi-lo, fiz ambos usarem o 11.6.0 e foi corrigido o exemplo

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"

Reconstruindo corrigido.


Para erro Expose.class, ou seja,

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

use o código abaixo

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

Para mim, algo semelhante aconteceu quando eu adicionei acidentalmente

apply plugin: 'kotlin-android'

para o meu módulo de biblioteca Android. A remoção da linha corrige o problema.


Tente o seguinte:

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

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

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

no arquivo build.gradle diretório do 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!


basta apagar android / support / v4 / util / TimeUtils.class


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

código no build.gradle é assim:

androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.1') {
    // http://.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, a lib 'espresso' possui um jar chamado support-v4 e no meu projeto 'app' tem o mesmo support-v4, exclua o support-v4 ao importar o espresso.

PS: parece que o compile project não pode funcionar com a exclude







android-multidex