如何强制gradle子项目使用root项目的buildToolsVersion / compileSdkVersion?

时间:2013-11-05 21:06:37

标签: android gradle

寻找一些聪明的方法,只做一次,例如

allprojects {
  android {
    buildToolsVersion '18.0.1'
    compileSdkVersion 18

    defaultConfig {
        targetSdkVersion 18
    }
  }
}

否则,每当有新的SDK更新可用时,我都需要在每个子项目中(例如在引用的库中,如volley或viewpagerindicator)中添加此内容。

2 个答案:

答案 0 :(得分:0)

通常,根项目不包含代码,因此您将使用subprojects。此外,您必须在android {}阻止之前应用Android插件。除此之外,我希望这可行。

答案 1 :(得分:0)

我在另一个问题中回答:

我找到了解决方案here

将此处复制以防万一:

在你的root build.gradle中添加

ext {
    compileSdkVersion = 20
    buildToolsVersion = "20.0.0"
}
subprojects { subproject ->
    afterEvaluate{
        if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
            android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                buildToolsVersion rootProject.ext.buildToolsVersion
            }
        }
    }
}

这会将compileSdkVersion和buildToolsVersion应用于您拥有的任何Android模块。

在你的主项目的build.gradle中改变了对它的依赖:

compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion

基本上,您只需定义一次,就可以在任何地方使用。

干杯。