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.