Gradle Duplicate Entry:java.util.zip.ZipException

Say*_*san 17 android gradle zendesk android-studio android-gradle-plugin

我将Zendesk移动sdk通过其maven存储库集成到我的项目中,它将不再构建.它与我正在使用的毕加索图书馆发生了某种冲突.我在构建期间遇到此错误:

Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: com/squareup/picasso/Action$RequestWeakReference.class 
Run Code Online (Sandbox Code Playgroud)

我跑../gradlew dependencies了app文件夹,这是我在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 (*)
Run Code Online (Sandbox Code Playgroud)

因此,zendesk也使用毕加索,但版本与我在项目中的版本不同.我试着从zendesk中排除毕加索,就像这样:

compile (group: 'com.zendesk', name: 'sdk', version: '1.0.0.1'){
            exclude group: 'com.squareup.picasso'
        }
Run Code Online (Sandbox Code Playgroud)

但这会导致应用程序的其他组件中出现运行时异常.我得到一个与库完全无关的类的NoDefFoundError.
有没有人知道如何解决这个问题?

Tom*_*mer 27

添加com.android.support:multidex依赖项时,实际上添加了一些与其他依赖项冲突的依赖项.

我解决了它:
---------------
1.搜索类,在你的情况下,"RequestWeakReference.class"(在AndroidStudio中只需在Windows上按Ctrl + N或CMD-O在Mac上)
2.查看哪个jar包含它 - Android Studio将在弹出窗口中编写它.
3.从所有构建中排除它,例如:

android {
     configurations{
        all*.exclude module: 'servlet-api'
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 是否有任何正确的解决方案.我得到同样的问题java.util.zip.ZipException:重复条目:com/google/gson/annotations/Expose.class请帮助我.我把这个配置{all*.exclude module:'gson-2.1'} (8认同)