集成三方的时候,有的时候需要集成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.在项目里改自定义属性的名字