在我的Android项目中我使用
compile 'com.squareup.okhttp:okhttp:2.2.0'
我需要在2.2.0版本中使用okhttp才能使我的代码正常工作。但是当我添加
时我遇到了问题compile('io.intercom.android:intercom-sdk:1.1.2@aar') {
transitive = true
}
因为在intercom-sdk中,对于以后的版本再次存在okhttp依赖性:
compile 'com.squareup.okhttp:okhttp:2.4.0'
结果是我的代码使用的是更高版本的2.4.0而不是我想要的2.2.0。请问在我的模块中如何使用我指定的2.2.0并让对讲机使用其2.4.0?
答案 0 :(得分:4)
您可以使用以下内容:
compile('io.intercom.android:intercom-sdk:1.1.2@aar') {
exclude group: 'com.squareup.okhttp', module: 'okhttp'
}
但要注意。如果库使用2.2.0版本中不存在的方法,则它将失败。
答案 1 :(得分:2)
您应该定义解决方案策略以设置特定版本。这将保证您将获得您希望的正确版本,无论传递依赖版本是什么:
allProjects {
configurations.all {
resolutionStrategy {
eachDependency { DependencyResolveDetails details ->
if (details.requested.name == 'okhttp') {
details.useTarget('com.squareup.okhttp:okhttp:2.2.0')
}
}
}
}
}
在较新版本的Gradle中,您可以使用:
allProjects {
configurations.all {
resolutionStrategy.force 'com.squareup.okhttp:okhttp:2.2.0'
}
}