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