Android应用和库依赖项冲突

时间:2016-06-26 19:41:21

标签: android android-gradle

我的应用使用这些依赖项

 compile 'com.android.support:appcompat-v7:22.2.1'
 compile 'com.android.support:design:22.2.1'
 compile 'com.google.android.gms:play-services:7.0.0'
 compile 'com.google.code.gson:gson:2.2.4'

当我导入搜索弧库时,它使用不同的依赖项

  compile 'com.android.support:appcompat-v7:23.4.0'
  compile 'com.android.support:appcompat-v7:23.2.1'
  compile 'com.android.support:design:23.2.1'
  compile project(':SeekArc_library')

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

我假设您使用的是标准的gradle构建工具和Android Studio。

以下是针对冲突依赖项问题的推荐解决方案。例如,假设您已声明对com.google.guava版本X的显式依赖,但其他一些依赖关系正在使com.google.guava版本X-1具有内部依赖性。

dependencies文件中的build.gradle子句之后添加以下内容。

configurations {
    all*.exclude group: 'com.google.guava', module: 'guava-jdk5'
}

有关详细信息,请参阅https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.Configuration.html

注意:还有另一种方法,您可以选择性地从每个compile子句中排除某些依赖项,但不建议这样做,因为它不能很好地扩展。为了完整性,我会在这里包括它,但我不推荐它。使用与上述相同的示例

compile(group: 'com.google.guava', name: 'guava', version: 'X')
compile(group: 'com.some.other.dependency', name: 'foo', version: 'bar')
{
    // exclude transitive dependency since we want to depend on version `X` declared above
    exclude(group: 'com.google.guava', module: 'guava-jdk5')
}    

答案 1 :(得分:1)

我的应用程序和新添加的库依赖项存在冲突。我更改了app编译&将sdk构建到api 23并添加" useLibrary' org.apache.http.legacy'"。现在问题解决了。

答案 2 :(得分:0)

顶级应用程序库依赖项将覆盖较低级别的库依赖项。您不需要明确覆盖。请参阅Android构建文档

答案 3 :(得分:0)

如果要排除正在使用的库的依赖性,可以

compile 'yourLibraryName'{
   exclude module: 'appcompat-v7' 
   exclude module: 'appcompat-v7' 
 }

确保您提供自己的版本,否则您将获得运行时错误