一、远程依赖merge规则
如果多个模块是通过【implementation+坐标】的方式来依赖库的话,那么只会编译一个版本,并且是最新版本, 比如:
module A:
implementation "com.fengma.tool:gradle-tool:2.1.2"
...
module B:
implementation "com.fengma.tool:grdle-tool:2.3.3" //gradle默认会编译最新版本
如果你想改变默认的编译版本选择,可以通过Gradle的依赖选择机制强制指定某个版本:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'com.fengma.tool') {
details.useVersion '2.1.2'
details.because 'Use Lower version'
}
}
}
作者:fengma chu
链接:https://www.zhihu.com/question/274024367/answer/373515253
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
二、本地加远程依赖方式
当module A 以【本地lib】的方式引入某个jar包,module B以【implementation +坐标】的方式引入同一份库,则会引起编译冲突导致编译失败,需要统一依赖方式。
module A:
compile files('libs/fengma-tool-2.1.2-.jar')
...
module B:
compile "com.fengma.tool:grdle-tool:2.3.3"
... 编译冲突,类重复