我使用okhttp进行android多项目设置,作为多个项目的一部分
在项目A中,okhttp包含在源代码中。 在项目B中,okhttp带有部分库依赖项。
当我构建时,我收到以下错误。
任务执行失败':事件 - Android:事件:proguardFlavDebug'。 java.io.IOException:不能写[/Users/gatorsboy/events/Events-Android/events/build/intermediates/classes-proguard/dfmobile/debug/classes.jar](不能读[ /Users/gatorboy/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp/okhttp/2.4.0/40340c0748190fe897baf7bffbc1b282734294e5/okhttp-2.4.0.jar(;;;;;;!META-INF /MANIFEST.MF)](重复的zip条目[okhttp-2.4.0.jar:com / squareup / okhttp / Address.class]))
我无法从项目B中排除okhttp,因为与项目A中的okhttp源代码相比,它是一个不同的版本。还有其他方法可以解决此问题吗?
stackoverflow上有类似的帖子,但我找不到解决方案。
答案 0 :(得分:2)
我得到了同样的错误。只需将这些行添加到build.gradle
,它就适合我!
configurations{
all*.exclude module: 'okhttp'
all*.exclude module: 'okio'
}
答案 1 :(得分:0)
您不能在同一个应用程序中拥有同一个库的两个版本。如果 绝对 需要同一个库的两个版本,则需要使用jarjar
工具重新打包其中一个版本。
否则你永远不会将同一个lib的两个不同版本放到同一个应用程序中。
最佳解决方法是对两个软件包使用相同的版本...如果这不是一个选项,那么jarjar
重新打包是唯一的解决方案,但它不是一个好的解决方案,因为如果以后需要不同的版本,则必须再次手动重新打包lib。
JarJar参考:https://code.google.com/p/jarjar/