美文网首页
gradle隐形依赖

gradle隐形依赖

作者: lbForce | 来源:发表于2018-04-29 15:34 被阅读0次

    依赖了com.android.support:appcompat-v7:27.1.1,并且使用了DataBinding。
    编译会失败提示找不到方法“ContextCompat.getColor(@NonNull Context context, @ColorRes int id)”,明明在27.1.1的appcompat-v7包里有有这个方法。
    然后能搜到support-v4:21.0.3里也有这个类但是没有这个方法,这就说明依赖冲突了。而support-v4:21.0.3肯定是隐形依赖进来的。

    用./gradlew app:dependencies列出库的依赖关系:

    +--- com.android.databinding:library:1.3.1
    |    +--- com.android.support:support-v4:21.0.3
    |    |    \--- com.android.support:support-annotations:21.0.3 -> 27.1.1
    |    \--- com.android.databinding:baseLibrary:2.3.0-dev -> 3.0.1
    

    原来databinding依赖了support-v4:21.0.3。

    在 Gradle 中如果多个库依赖于相同的库的不同版本,Gradle 默认选择那个库的最新版本。上面显示 support-v4:21.0.3 依赖于 support-annotations:21.0.3 ,但是有一个新版本 support-annotations:27.1.1在依赖树中,所以 27.1.1 将会被使用。但是support-v4:21.0.3 只是 21.0.3 版本的,没有使用最新的 27.1.1 版本,导致了冲突。

    所有的 com.android.support 库都必须使用完全相同的版本。

    所以在项目根目录下的gradle下加就ok了:

    android {
            configurations.all {   
            resolutionStrategy.force 'com.android.support:support-v4:27.0.2'
        }
    }
    

    相关文章

      网友评论

          本文标题:gradle隐形依赖

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