如何强制让Gradle的子项目使用根项目的buildToolsVersion/compileSdkVersion?

5
寻找一种聪明的方法,只需执行一次,例如:
allprojects {
  android {
    buildToolsVersion '18.0.1'
    compileSdkVersion 18

    defaultConfig {
        targetSdkVersion 18
    }
  }
}

否则,每当有新的SDK更新时,我就需要在每个子项目(例如在引用库中,如volley或viewpagerindicator)中升级此项。
2个回答

0
通常根项目不包含代码,因此您将使用子项目。此外,在`android {}`块之前要应用Android插件。除此之外,我预计这样可以正常工作。

0
我在另一个问题中回答了类似的内容:
我在这里找到了一个解决方案 here
为了保险起见,我在这里复制一下:
在你的根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文件中,将dependencies改成如下所示:

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

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

干杯。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接