java.util.zip.ZipException: zduplikowany wpis podczas packageAllDebugClassesForMultiDex


118

Nie jestem pewien, co oznacza ten błąd.

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

Obecnie używam android-support-v4.jardla moich bibliotek

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

Błąd nie pojawia się podczas synchronizacji Gradle. Właśnie wtedy, gdy próbuję uruchomić aplikację

Jaki może być problem?


1
Błąd pojawia się, gdy jakakolwiek inna Twoja zależność jar ma tę samą klasę, upewnij się, że nie dodano obsługi jar zarówno jako zależności gradle, jak i jar. prosimy o uwzględnienie w pytaniu całkowitego zamknięcia zależności.
— pyus13

@ pyus13 thanks. Zaktualizowałem pytanie. To jest cała moja lista zależności
— bman

1
Masz 3 zależności modułów w swoim projekcie, więc upewnij się, że tylko jedna z nich ma zależność support-v4.
— pyus13

proszę zobaczyć moją odpowiedź na: stackoverflow.com/questions/28168063/…
— Tomer

Błąd: nie powiodło się wykonanie zadania „: Mulugu Astro: transformClassesWithJarMergingForDebug”. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: zduplikowany wpis: android / support / v4 / view / ViewPager $ MyAccessibilityDelegate.class
— Harsha

Odpowiedzi:


64

Musisz sprawdzić, czy wstawiłeś bibliotekę v4 i bibliotekę kompilacji? Nie możesz powtarzać biblioteki w swojej aplikacji lub programie zależności.

usuń bibliotekę powtórzeń, aby pozostała tylko jedna wersja V4.

w build.gradlepliku katalogu aplikacji dodaj to polecenie:

android{


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

}

mi to pasuje! Możesz tego spróbować!


19
Po dodaniu tych fragmentów nie mogę uzyskać wsparcia dla wersji 4. Masz jakiś pomysł?
— Nisarg

@Nisarg też mi się przytrafia.
— CJ_COIMBRA

@Nisarg możesz użyć gradle rekompiluj program.
— GeekHades

@NisargCzy możesz mi pomóc, jak ponownie skompilować, ja też mam ten sam problem co twój, fragmenty i narzędzie do tworzenia stosów zadań przestały być rozwiązywane
— Gaurav Arora

82

Prawdopodobnie już to naprawiłeś, ale aby to nie pozostało bez odpowiedzi, spróbuj dodać to do build.gradle:

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

4
Dodałem wiersz konfiguracji, ale nadal Error:Execution failed for task ':Analyst:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: com/android/vending/billing/IInAppBillingService$Stub$Proxy.classsię wyświetla.
— biswajitGhosh

2
Jak rozwiązałeś problem?
— Arslan Anwar

9
czy jest jakieś właściwe rozwiązanie. Mam ten sam problem java.util.zip.ZipException: zduplikowany wpis: com / google / gson / annotations / Expose.class
— RamBabu Pudari

2
Błąd: (5, 30) błąd: pakiet android.support.v4.app nie istnieje.
— Pojawia się

1
Gdzie to ma iść, jestem nowy w gradle i w moim obecnym projekcie jest 5 plików build.gradle, żaden z nich nie ma configurationsw nich i wydaje się, że nie ma znaczenia, gdzie to wstawię, pojawiają się błędy typu nie mogę rozwiązać symbol „wyklucz” lub nie można rozwiązać symbolu „wszystkie”
— JStephen

25

Natknąłem się również na ten problem podczas ponownego importowania starego projektu zaćmienia. Wystąpiła stara zależność jako plik jar w projekcie.

po prostu usuń

compile fileTree (dir: 'libs', w tym: '* .jar')

w pliku ocen

i dodaj zależność w pliku gradle.

Mi to pasuje ..


Ten błąd wystąpił podczas importowania starego projektu Eclipse, przepraszam, w rzeczywistości usunąłem część biblioteki referencyjnej i dodałem tę samą zależność w pliku gradle.
— Paraneetharan Saravanaperumal

1
U mnie zadziałało (również importowanie ze starej konfiguracji zaćmienia). Po tym trzeba było wyczyścić i odbudować.
— Paco Abato,

17
Dlaczego powinienem ufać osobie o imieniu Sauron?
— matthias_b_nz

Zatrzymał ten konkretny błąd, ale spowodował dziesiątki innych. Czasami potrzebujesz tych zależności. Choć może to zabrzmieć dziwnie, tym razem Sauron miał rację.
— SMBiggs

1
Dodając swoje zależności w sposób jawny, jeden po drugim, prawdopodobnie odkryjesz zduplikowaną .jarbibliotekę, którą dołączasz dwukrotnie. Nigdy nie używaj compile fileTree(...), ukrywa zbyt wiele oczywistych błędów.
— Joshua Pinter

13

W moim przypadku wspomniany błąd „zduplikowanego wpisu” pojawił się po ustawieniu multiDexEnable=truepliku build.gradle.

Aby w pełni rozwiązać problem, najpierw zapoznaj się z sekcją Konfigurowanie aplikacji za pomocą ponad 64 tys. Metod (szczególnie „Konfigurowanie aplikacji dla Multidex za pomocą Gradle”).

Ponadto wyszukaj wystąpienia klasy, która powoduje błąd „zduplikowanego wpisu”, używając ctrl + n w Android Studio. Określ moduł i zależność, która zawiera duplikat i wyklucz go z kompilacji, np .:

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

Musiałem wypróbować wiele etykiet modułów, aż zadziałało. Wykluczenie „support-v4” rozwiązuje problemy związane z „java.util.zip.ZipException: zduplikowany wpis: android / support / v4 / *”


9

Rozumiem, że istnieją zduplikowane odniesienia do tego samego interfejsu API (prawdopodobnie różne numery wersji). Podczas budowania z wiersza poleceń powinno być stosunkowo łatwo debugować.

Spróbuj ./gradlew yourBuildVariantName --debugz wiersza poleceń.

Obrażający przedmiot będzie pierwszym niepowodzeniem. Przykład może wyglądać następująco:

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'

W powyższym przypadku plik aar, który umieściłem w moim katalogu libs (theOffendingAAR), zawierał plik jar usług Google Play (tak, całość, tak, wiem), podczas gdy mój plik kompilacji BaseApp korzystał z usług lokalizacji:

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

Możesz bezpiecznie usunąć problematyczny element z plików kompilacji, wyczyścić i przebudować (w razie potrzeby powtórz).


1
A co, jeśli potrzebuję biblioteki, która narusza prawa?
— Janusz

1
Pomogło mi to wyśledzić bibliotekę, która
— narusza zasady

1
To nie pomaga ... po usunięciu problematycznej biblioteki moduł nie może się skompilować
— Utsav Gupta

9

sprawdź wersje swoich zależności, musisz mieć kompatybilne wersje, które zwracają uwagę szczególnie na pakiety com.google, muszą mieć taką samą wersję, jak:

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

Obie wersje to 8.3.0, jeśli masz inną wersję, kompilacja zgłosi ten wyjątek.


Dzięki stary, działa idealnie, mam trzy różne usługi Google Play, które kompilują 'com.google.android.gms: play-services-analytics: 8.4.0' compile 'com.google.android.gms: play-services-ads: 8.3 .0 'kompilacja' com.google.android.gms: play-services-plus: 8.4.0 '
— Samadhan Medge

5

Proste Usuń plik JAR z zależności gardle.project jako v7 i uruchom projekt


To działa dla mnie, po prostu usuń „pliki kompilacji ('libs / android-support-v13.jar')” z „zależności” formularza w moim „build.gradle (moduł: aplikacja)”. Dla odniesienia otrzymaj ten błąd po zaimportowaniu formularza projektu zaćmienie do Android Studio.
— rafaellorey

5

W przypadku błędu Expose.class tj

java.util.zip.ZipException: zduplikowany wpis: com / google / gson / annotations / Expose.class

użyj poniższego kodu

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

11
OP nic o tym nie mówił gson.
— IgorGanapolsky

3

dowiedz się, że biblioteka zależy od wsparcia v4 i wyklucz ją.

kod w build.gradlejest taki:

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

W mojej sytuacji biblioteka „espresso” ma słoik o nazwie support-v4, aw moim projekcie „app” ma to samo wsparcie-v4, wykluczając support-v4 podczas importowania espresso.

PS: wydaje się, że compile projectnie działa zexclude


1

Dzieje się tak, ponieważ dodałeś bibliotekę i nadałeś jej zależność od modułu więcej niż raz.

W moim przypadku dodałem bibliotekę jako moduł i jako zależność od gradle.

Usunięcie jednego źródła dodawania biblioteki (usunąłem zależność od gradle) rozwiązało mój problem.


alternatywnie ten problem został rozwiązany przez usunięcie pliku jar z katalogu libs i zachowanie zależności od gradle.
— droideckar

Yeh! Usunięcie dowolnego źródła może rozwiązać problem. Utrzymywanie zależności od stopni jest dobre.
— Rahul Rastogi

0

W przypadku błędu: wykonanie nie powiodło się dla zadania „: app: transformClassesWithJarMergingForDebug” com.android.build.api.transform.TransformException java.util.zip.ZipException zduplikowany wpis com / google / gson / annotations / Expose.class

Oto co zrobiłem:

1) Usuń plik gson-2.5.jar. 2) konfiguracje {all * .exclude module: 'gson-2.5'}


Pytanie nie dotyczyło Gsona
— OneCricketeer

0

Napotkałem ten problem, ponieważ ręcznie skopiowałem jar w libs, a także wspomniałem o zależności w pliku gradle. Sprawdzasz również strukturę projektu, czy ten sam plik jar jest kopiowany do innego folderu, takiego jak libs, lub w folderze projektu.


0

Miałem ten sam problem po aktualizacji Android SDK. Udało mi się uruchomić aplikację w programie buildToolsVersion '23.0.1', wystąpił ten sam błąd, gdy zmieniłem nabuildToolsVersion '24.0.3'

Rozwiązałem problem, aktualizując moją wersję Java z 1.7 do 1.8 z compileSdkVersion 24


0

Ten problem kosztował mnie cały dzień. W końcu obniżyłem wersję biblioteki firebase-ui z 2.0.0 do 1.2.0 i dodałem następujący kod w pliku build.gradle na poziomie projektu:

allprojects {
    repositories {
        jcenter()

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

1
Wersja interfejsu Firebase zależy od tego, którą wersję
— Firebase

0

Mam również problem, ponieważ skompilowałem „com.android.support:appcompat-v7:24.0.0-alpha1”, ale dodałem reclerview liberary compile „com.android.support:recyclerview-v7:24.0.2” .. Zmieniłem wersję na taką samą jak zgodna z (24.0.2 intead z 24.0.0).

mam odpowiedź… może to komuś pomoże.


0

W moim przypadku wspomniany błąd „zduplikowanego wpisu” pojawił się po ustawieniu multiDexEnable = true w pliku build.gradle.

a dokładny błąd, który otrzymałem, był poniżej:

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

Więc najpierw wyszukałem klasę, która powoduje błąd "zduplikowanego wpisu" używając ctrl + n w Android Studio i szukałem com / google / android / gms / internal / zzqx.class, a następnie pokazywało 2 wpisy dla klasy gms z jedną wersją 8.4.0 i 1 z wersją 11.6.0.

Aby to naprawić, użyłem wersji 11.6.0 i został naprawiony przykład

wcześniej

    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"

Po

    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"

Naprawiono odbudowę.


0

W moim przypadku dokładny błąd był poniżej

': android: transformClassesWithJarMergingForDebug'.

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

Używałem innej wersji google apis tj. W jednym module gradle pliku

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

jednak w innych modułach w wersji 11.6.0 jak poniżej

   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"

Jednak aby to znaleźć, zrobiłem ctrl + n w Android Studio i wprowadziłem nazwę klasy zzqx.class, a następnie wyświetliło się 2 pliki jar, które są pobierane dla tej klasy, a potem zrozumiałem, że gdzieś używam wersji 8.6.0. Po zmianie wersji 8.6.0 na 11.6.0 i przebudowie projektu problem został rozwiązany.

Mam nadzieję że to pomoże .

Więcej na ten temat znajdziesz tutaj https://www.versionpb.com/tutorials/step-step-tutorials-libgdx-basic-setup-libgdx/implementing-google-play-services-leaderboards-in-libgdx/


0

U mnie coś podobnego stało się, gdy przypadkowo dodałem

apply plugin: 'kotlin-android'

do mojego modułu biblioteki Android. Usunięcie linii rozwiązuje problem.


0

Wypróbowałem wszystkie powyższe rozwiązania, ale nie działały. Próbowałem zaktualizować biblioteki, przechodząc do struktury projektu goto> app. I to działa dla mnie! Mam nadzieję, że ta odpowiedź komuś pomoże.


-1

Spróbuj tego:

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

To pytanie dotyczy biblioteki wsparcia v4, a nie PhotoView
— OneCricketeer

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.