17

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

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

../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 (*)

所以 zendesk 也在使用 picasso,但与我在项目中使用的版本不同。我尝试像这样从 zendesk 中排除毕加索:

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

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

4

1 回答 1

27

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

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

android {
     configurations{
        all*.exclude module: 'servlet-api'
    }
}
于 2015-03-09T08:34:00.927 回答