而不是在每个子项目中复制android配置块:
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 9
targetSdkVersion 14
}
}
我宁愿把它放在顶级/根gradle构建文件中,如:
subprojects{
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 9
targetSdkVersion 14
}
}
}
然而,这不起作用。 :(
错误: “..不能为参数找到方法android()......”
答案 0 :(得分:17)
对此的解决方案原来是:
subprojects{
afterEvaluate {
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 9
targetSdkVersion 14
}
}
}
}
据我所知,这是因为在评估时处理/使用android {...}意味着它必须存在(即明确写入或包含为“应用插件”的一部分)它命中根构建文件中的子项目。而且,更准确地说,这意味着顶级项目必须定义它(它可能不会因为它可能不是'android'或'android-library'构建本身)。但是,如果我们在评估之后将其推迟,那么它可以直接使用每个子项目中可用的内容。
这个问题+解决方案还假设所有子项目都是某种形式的android项目(在我的情况下是真的,但不一定是其他的)。 更安全的答案是使用:
subprojects{
afterEvaluate {
if(it.hasProperty('android')){
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 9
targetSdkVersion 14
}
}
}
}
}