美文网首页
android依赖解决大全

android依赖解决大全

作者: BK_凌霄 | 来源:发表于2021-05-18 18:01 被阅读0次

一、问题的产生

1.1 引入的支持库版本和编译版本不一致

相信大家在 build.gradle中引入各种依赖的时候,或多或少会见过一些红线, gradle会提示你,当前的编译版本和你依赖的这个支持库的版本号不同,应该使用相同的支持库版本,来比避免编译不通过问题,类似于这种。

This support library should not use a different version (27) than the compileSdkVersion (26)

clipboard.png

1.2 第三方库中的子依赖和当前项目的编译版本不一致。

当引入一个第三方库,该库中也依赖了 Android支持库,且支持库的版本,和当前版本不一致而导致的版本冲突:

二、如何解决

解决冲突的方式包括:强制指定,排除。

2.1 查看依赖树

Gradle 默认开启了 依赖传递 意思就是 项目依赖了A,A又依赖了B和C,这时候,我们只需要写一行代码: implementation A就行了,由传递依赖导致的冲突,默认是以最高版本的依赖为准,要想查看整个项目的依赖传递关系,使用命令:

./gradlew app:dependencies --configuration releaseRuntimeClasspath

app是具体的module
releaseRuntimeClasspath是具体的variants类型。

符号的含义:

  • x.x.x (*) 该依赖已经有了,将不再重复依赖。
  • x.x.x -> x.x.x 该依赖的版本被箭头所指的版本代替。
  • x.x.x -> x.x.x(*) 该依赖的版本被箭头所指的版本代替,并且该依赖已经有了,不再重复依赖。

2.2 Exclude 排除

  • 排除所有:

// 在build.gradle 中添加下面节点configurations{    all*.exclude module: "support-fragment"}
  • 排除指定:

    implementation ('com.github.bumptech.glide:glide:4.7.1'){        exclude module:"support-fragment"    }

exclude 可以搭配 groupmodule使用,将会排除所有被匹配的依赖。


2.3 Force 强制指定

强制指定依赖的版本。

configurations.all {   
  resolutionStrategy {      
     force 'com.android.support:support-fragment:26.1.0'  
  }
}

相关文章

网友评论

      本文标题:android依赖解决大全

      本文链接:https://www.haomeiwen.com/subject/hknbuhtx.html