项目集成aar以及gradle依赖冲突解决方式

Posted Android开发中文站

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目集成aar以及gradle依赖冲突解决方式相关的知识,希望对你有一定的参考价值。

集成三方的时候,有的时候需要集成aar到自己的项目里边,下边对几种情况进行总结:

一.项目属于单moudle架构,或者直接将aar放到app moudle里边

第一步:将aar方法moudle的libs的目录下

第二步:在项目的build.gradle文件里边添加

repositories {

    flatDir {

        dirs 'libs' // 指定aar存放的路径

    }

}

但是需要注意这个需要放到android节点下边

2.该moudle被其他moudle引用了话,那么除了上边两个步骤之外,还需要在引用该moudle的moudle的build.gradle文件里边添加,也是需要在android节点下

repositories {

    flatDir {

        dirs 'xxx/libs' // Module A的libs的目录地址

    }

}
二: aar与项目中的属性冲突:

aar项目其实是没有添加依赖的,也就是需要在项目中添加所需要的依赖就会有可能出现冲突,下边对长常用的冲突解决方式进行总结:

如何解决冲突

1.jar包冲突

这是最简单的,删除其中一个jar包。

2.在明确的知道是哪个库的哪些依赖的情况下

可以使用exclude来去除传递依赖,如下:

3.2.1 exclude group

根据包名来过滤,下面的配置是:过滤包名”com.android.support”的所有依赖

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {

exclude group'com.android.support'

})

3.2.2 exclude module

根据模块名称来过滤下面的配置是过滤”support-annotations”这个模块

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {

exclude module'support-annotations'

})

3.3.2 逐个指定

哪个冲突指定哪个。Gradle强制依赖某个第三方库

configurations.all {

resolutionStrategy.force "com.android.support:appcompat-v7:23.2.1"

}

3.3.4指定以当前版本为准

compile('com.android.support:support-v4:23.3.0') {
        force = true
}

我们在依赖okhttp的时候很可能发生冲突,就比如依赖的依赖中也包含了support-v4,这种场合下,就会产生版本冲突的问题,加上force = true表明的意思就是即使在有依赖库版本冲突的情况下坚持使用被标注的这个依赖库版本。

四:属性冲突解决: 要查看build报错信息

可能在aar里边自定义控件的属性跟项目中的依赖或者自定义控件属性冲突了,那么解决方式两种:

1.aar方更改自定义控件属性名字

2.在项目里改自定义属性的名字


以上是关于项目集成aar以及gradle依赖冲突解决方式的主要内容,如果未能解决你的问题,请参考以下文章

处理Gradle依赖冲突

排除aar/jar中冗余或者冲突包、类

如何通过 AAR 形式集成 leakcanary-android 服务

Gradle打包冲突,exclude依赖

Gradle 依赖&解决依赖冲突

Android Studio 打包及引用 aar