lib
和
app
. 我刚换了衣服
图书馆
的build.gradle以停止暴露依赖项(即,我从
api
->
implementation
应用程序
模块不直接依赖于OkHttp日志拦截器,所以我认为最好不要公开它。
模块的build.gradle:
dependencies {
// api 'com.squareup.okhttp3:logging-interceptor:3.10.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'
...
}
应用程序
模块的build.gradle:
dependencies {
implementation project(':lib')
implementation group: 'com.zendesk', name: 'support-providers', version: '2.0.0'
...
}
与中的依赖项“com.squareup.okhttp3:logging interceptor”冲突
项目:应用程序。运行时类路径(3.10.0)和
编译类路径(3.8.1)不同
+--- project :lib
...
+--- com.zendesk:support-providers:2.0.0
| +--- com.zendesk:core:1.0.0
| | +--- com.zendesk:java-common:1.13
| | +--- com.google.dagger:dagger:2.12 -> 2.15 (*)
| | +--- com.squareup.retrofit2:retrofit:2.3.0
| | | \--- com.squareup.okhttp3:okhttp:3.8.0 -> 3.8.1
| | | \--- com.squareup.okio:okio:1.13.0
| | +--- com.squareup.retrofit2:converter-gson:2.3.0
| | | +--- com.squareup.retrofit2:retrofit:2.3.0 (*)
| | | \--- com.google.code.gson:gson:2.7
| | +--- com.squareup.okhttp3:logging-interceptor:3.8.1 // <----- SEE HERE
| | | \--- com.squareup.okhttp3:okhttp:3.8.1 (*)
| | +--- com.squareup.okhttp3:okhttp:3.8.1 (*)
| | +--- com.android.support:support-annotations:27.0.2 -
图书馆
没有显示出它的依赖关系
应用程序
依赖于Zendesk sdk
OkHttp日志截取程序的版本。
我只看到两种解决方法:
-
api -> implementation
在里面
模块,从而将日志截取程序公开给
应用程序
-
声明对日志拦截器的顶级依赖,并设置为3.10以强制Zendesk使用最新版本:
应用程序
build.gradle公司:
dependencies {
implementation project(':lib')
implementation group: 'com.zendesk', name: 'support-providers', version: '2.0.0'
// used just to force zendesk to use 3.10
implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'
...
}
应用程序
如果Zendesk更新了他们的库以使用
对于他们的OkHttp依赖,这能解决问题吗?Gradle会允许两个依赖项使用同一个传递依赖项的不同版本吗,只要它们不向整个项目公开?