我有一个Android项目,它依赖于不同的模块,每个模块都依赖于android support-v4库的不同版本
1)我的应用程序还依赖于最新的android support-v4库(修订版21)所以在这个build.gralde中我放了这样一行:
dependencies {
compile 'com.android.support:support-v4:21.0.0'
}
2)Facebook SDK(v.3.15)模块也依赖于android支持库v4,但是修订版13及其build.gradle文件说:
dependencies {
compile 'com.android.support:support-v4:13.0.+'
compile files('../libs/bolts.jar')
}
3)还有一个模块,在这种情况下我们可以调用Module3,也取决于support-v4,但修改版本与其他模块不同,如:
dependencies {
compile 'com.android.support:support-v4:19.0.+'
compile files('../libs/bolts.jar')
}
问题:
1)gradle如何处理不同的support-v4库修订版?
2)它究竟做了什么?
3)就apk尺寸而言,这是什么意思?
答案 0 :(得分:1)
在这种情况下,Gradle将无法构建(在我的皮肤上测试,我没有找到其他解决方案) "不幸的是"你必须在任何模块上使用相同版本的支持。
Gradle提供以下冲突解决策略:
最新:使用最新版本的依赖项。这是Gradle的默认策略,只要版本向后兼容,它通常是一个合适的选择。
失败:版本冲突导致构建失败。此策略要求在构建脚本中显式解决所有版本冲突。有关如何明确选择特定版本的详细信息,请参阅ResolutionStrategy。
虽然上面介绍的策略通常足以解决大多数冲突,但Gradle提供了更细粒度的机制来解决版本冲突:
将第一级依赖关系配置为强制。如果冲突中的依赖关系已经是第一级依赖,则此方法很有用。请参阅 DependencyHandler 。
将任何依赖项(传递或不传递)配置为强制。如果冲突中的依赖性是传递依赖性,则此方法很有用。它还可用于强制第一级依赖项的版本。请参阅 ResolutionStrategy
依赖性解析规则是Gradle 1.4中引入的一项孵化功能,它可以对为特定依赖项选择的版本进行细粒度控制。