美文网首页
解决Android项目中第三方库依赖冲突的方法

解决Android项目中第三方库依赖冲突的方法

作者: young蛘 | 来源:发表于2019-10-31 18:02 被阅读0次

    解决依赖冲突步骤

    一.查看依赖关系,找到有冲突的依赖

    二.剔除部分依赖关系,或强制使用某指定版本的依赖关系。

    一、查看依赖关系

    使用如下命令:gradlew :[module_name]:dependencies

    如:查看app Module的依赖关系,输入如下命令:

    gradlew :app:dependencies

    Mac系统下需在gradlew前加"./"即,./gradlew :app:dependencies 

    其他参考命令:

    ./gradlew dependencies

    # 或者模组的 依赖

    ./gradlew app:dependencies

    # 检索依赖库

    ./gradlew app:dependencies | grep CompileClasspath

    # windows 没有 grep 命令

    ./gradlew app:dependencies | findstr "CompileClasspath"

    # 将检索到的依赖分组找到 比如 multiDebugCompileClasspath 就是 multi 渠道分发的开发编译依赖

    ./gradlew app:dependencies --configuration multiDebugCompileClasspath

    # 一般编译时的依赖库,不是固定配置方式,建议检索后尝试

    ./gradlew app:dependencies --configuration compile

    # 一般运行时的依赖库,不是固定配置方式,建议检索后尝试

    ./gradlew app:dependencies --configuration runtime

    如果你不想在命令终端中查看,而是想把依赖关系输出到文件中,则可以使用以下命令:

    gradlew :[module_name]:dependencies > [output_file]。

    例如将app module的依赖关系输出到dependence.txt文件中:

    gradlew :app:dependencies > dependence.txt。

    二、剔除依赖关系

    通过移除某个第三方中特定的依赖。

    使用exclude group:'group_name':module:'module_name'方式剔除具体依赖,如果没有指定module_name则该group下所有的依赖都会被剔除,具体使用:

    //剔除rxpermissions这依赖中所有com.android.support相关的依赖,避免和我们自己的冲突implementation 'com.github.tbruyelle:rxpermissions:0.10.2',{

    exclude group:'com.android.support'  

    exclude group:'xxxxx'

    }//剔除 tm_navigation(这里是本地依赖)中依赖的springview

    implementation project(path:':tm_navigation'),{ 

    exclude group:'com.liaoinstan.springview',

    module:'library'

    }

    关于group和module的概念,举一个例子就清楚了。

    例如对于依赖implementation 'com.android.support:appcompat-v7:27.1.0'。

    group为com.android.support,module为appcompat,版本号为27.1.0,同一个group下面可以有很多module的。

    下面这种方式可以批量剔除整个工程中的相关依赖

    android{//....//剔除工程中所有的该依赖

        configurations{

            all*.excludegroup:'org.hamcrest',module:'hamcrest-core'

        }

    }

    强制版本

    有时候依赖传递层级过深或者数量过多,通过上面的方式则不能达到剔除的效果,这时候强制使用版本

    android{//....//强制使用

        configurations.all{

            resolutionStrategy{

                force'com.google.code.gson:gson:2.8.5'

            }

        }

    }

    相关文章

      网友评论

          本文标题:解决Android项目中第三方库依赖冲突的方法

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