2015-01-27 11 views
17

Zintegrowałem mobilny sdk Zendesk poprzez jego repozytorium z movenem i już go nie zbudowałem. Ma jakieś zderzenie z biblioteką Picassa, z której korzystam. Otrzymuję ten błąd podczas kompilacji:Wpisanie duplikatu Gradle: java.util.zip.ZipException

Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'. 
> java.util.zip.ZipException: duplicate entry: com/squareup/picasso/Action$RequestWeakReference.class 

wpadłem ../gradlew dependencies w folderze app i to co znalazłem pod modułem Zendesk:

\--- com.zendesk:sdk:1.0.0.1 
    +--- com.squareup.retrofit:retrofit:1.4.1 
    | \--- com.google.code.gson:gson:2.2.4 
    +--- com.squareup.picasso:picasso:2.3.2 
    +--- com.android.support:support-v4:20.0.+ -> 21.0.3 (*) 
    \--- com.android.support:appcompat-v7:20.0.+ -> 21.0.3 (*) 

Więc Zendesk jest również przy użyciu Picassa, ale w innej wersji niż co mam w moim projekcie. Próbowałem wyłączyć picasso z zendesk w ten sposób:

compile (group: 'com.zendesk', name: 'sdk', version: '1.0.0.1'){ 
      exclude group: 'com.squareup.picasso' 
     } 

, ale powoduje to wyjątki czasu wykonywania w innych składnikach aplikacji. Otrzymuję NoDefFoundError dla klasy całkowicie niepowiązanej z bibliotekami.
Czy ktoś ma pomysł, jak obejść ten problem?

+1

Byłbyś w stanie opublikować kompletny „build.gradle” plik, którego używasz? Dzięki. – AndroidGuy

Odpowiedz

26

Po dodaniu zależności com.android.support:multidex faktycznie dodano pewne zależności, które kolidują z innymi zależnościami.

Rozwiązałem go:
---------------
1. Wyszukiwanie dla klasy, w ty przypadku "RequestWeakReference.class" (w AndroidStudio prostu wciskamy Ctrl + N w Windows lub CMD-O na Macu)
2. Zobacz, który jar zawiera - Android Studio zapisze go w popup.
3. wyklucza go ze wszystkich buduje, na przykład:

android { 
    configurations{ 
     all*.exclude module: 'servlet-api' 
    } 
} 
+8

czy istnieje odpowiednie rozwiązanie.i otrzymuję ten sam problem java.util.zip.ZipException: duplikat wpisu: com/google/gson/adnotacje/Expose.class prosze mi pomóc. Wstawiam takie konfiguracje {all * .exclude module: 'gson-2.1'} –

+0

@RamBabuPudari Mam do czynienia z samym problemem z Expose.class. Czy znalazłeś jakieś rozwiązanie? – Rohan

+0

@Tomer To działało dla mnie. Miałem podobny problem, gdy używam salwy w Android Studio w jednym z moich projektów. –

Powiązane problemy