如果两个依赖中有相同的引用但是引用的版本不同就回造成依赖冲突导致项目无法运行,首先我们人为的强制造成一个冲突
implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
implementation 'io.reactivex.rxjava2:rxjava:2.0.6'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
很明显 retrofit中的rxjava会和自己的rxjava冲突
运行项目后报错:
现在我们要在gradle中配置一下 清除重复的配置
在app.gradle中的 android 的大括号下加入
packagingOptions {
exclude 'META-INF/rxjava.properties'
}
exclude 后面填写错误提示的内容就行 重新同步一下项目就能运行了
最后总结一个gradle 的小知识
implementation api complie 这三个的区别
api 是用来替换 complie的 他俩并没有太多的区别
implementation 和 api 的区别是 如果项目下还有一个别的module 叫action 的这个module 下 用implementation 引入了 A 用 api 引入了B 再把action module 依赖于主app 后 比如: compile project(’:action’) 但app module只能使用action module下的B
总结一下就是:api或compile关键字引用的包对于其他module来说是可见的,而implementation关键字引用的包对于其他module来说是不可见的。