如何解决同一依赖项的多个版本之间的冲突问题

6

我在app/build.gradle文件中将我的依赖项标记为24.2.1,但是当我运行“gradlew app:dependencies”时,它显示25.1.0已解决。不确定如何发生这种情况,因为我没有添加任何25.1.0版本的依赖项?有没有办法找到哪个库正在拉最新版本。

  gradlw app:dependencies
    -- com.android.support:appcompat-v7:24.2.1 -> 25.1.0
       +--- com.android.support:support-annotations:25.1.0
       +--- com.android.support:support-v4:25.1.0

在Android Studio中,点击enter image description here图标。

1
可能您正在使用其他库,这些库正在引入25.1.0版本。 - MatPag
使用此命令:https://developer.android.com/studio/build/dependencies.html#view_the_dependency_tree 来检查您的依赖树。 - MatPag
我正在使用gradle应用程序的"dependencies"命令查看输出,但不确定如何从结果中找到哪个是拉取最新版本的。 - Sam
你所发布的是 gradlw app:dependencies 的完整输出吗?如果不是,请查找其他提到 com.android.support:appcompat-v7 的地方。 - Henry
基本上,我需要查看库“com.android.support:XXX:25.1.0”,但不包括此符号“->”。 - Sam
显示剩余6条评论
1个回答

11

当出现这种情况时,是因为您使用的另一个库正在引入相同依赖项的其他版本。

您需要使用该命令确定您的依赖树

./gradlew app:dependencies

在Android Studio终端中执行。

然后,您需要向上滚动终端窗口,直到找到依赖树,并检查是否存在来自第三方库的某些嵌套依赖项,就像下面示例图片中的那样。

enter image description here

当您在 buid.gradle 中声明了与第三方依赖项相同的依赖关系版本冲突时,您可以排除已拉取的库,并强制该库使用您的版本:

对于您在支持库中遇到的问题,您可以按照以下方式进行处理:

compile ("com.example.libwithconfictdependency:library:1.0.0") {
    //this to exclude specific modules
    exclude group: 'com.android.support', module: 'support-v4'
    //or this to exclude every modules of the same package
    exclude group: 'com.android.support'
}

这个案例中存在的问题是:

  1. 因为你手动覆盖依赖项与库代码不兼容,所以库无法工作
  2. 您需要在build.gradle中提供所有必要的依赖项

关于如何处理此事,由您决定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接