Gradle Повторяющаяся запись: java.util.zip.ZipException

Я объединил мобильный sdk Zendesk через свой репозиторий maven в свой проект, и он больше не будет построен. У него есть своего рода столкновение с библиотекой picasso, которую я использую. Я получаю эту ошибку во время сборки:

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

Я запустил ../gradlew dependencies в папке приложения, и это то, что я нашел в модуле 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 (*)

Итак, zendesk также использует picasso, но отличается от того, что у меня есть в моем проекте. Я попробовал исключить пикассо из zendesk следующим образом:

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

но это приводит к исключениям во время выполнения в других компонентах приложения. Я получаю NoDefFoundError для класса, совершенно не связанного с библиотеками.
Кто-нибудь знает, как обойти эту проблему?

Ответ 1

Когда вы добавили зависимость com.android.support:multidex, вы фактически добавили некоторые зависимости, которые сталкиваются с другими зависимостями.

Я решил это:
---------------
1. Поиск класса, в вашем случае "RequestWeakReference.class" (в AndroidStudio просто нажмите Ctrl + N на Windows или CMD-O на Mac)
2. Посмотрите, в каком банке его содержится - Android Studio напишет его во всплывающем окне.
3. Исключить его из всех сборок, например:

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