我通过其maven存储库将Zendesk mobile sdk集成到了我的项目中,并且不再构建了。它与我正在使用的毕加索库有某种冲突。在构建过程中出现此错误:

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也使用毕加索,但版本与我的项目不同。我试图像这样从zendesk中排除毕加索:
compile (group: 'com.zendesk', name: 'sdk', version: '1.0.0.1'){
            exclude group: 'com.squareup.picasso'
        }

但这会在应用程序的其他组件中导致运行时异常。我收到与类库完全无关的类的NoDefFoundError。
有谁知道如何解决这个问题?

最佳答案

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

我通过以下方法解决了它:
---------------
1.搜索类,在这种情况下为“RequestWeakReference.class”(在AndroidStudio中,只需在Windows上按Ctrl + N或在Mac上按CMD-O)
2.查看包含它的jar-Android Studio将在弹出窗口中编写它。
3.从所有版本中排除它,例如:

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

09-11 18:01