从gradle生成android项目时,找不到参数的方法android()

从gradle生成android项目时,找不到参数的方法android(),android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,我有一个基于gradle的Android项目,有4个子模块——两个库和两个应用程序。我试图简化每个子模块的build.gradle文件,方法是将一些共享代码/配置移动到顶级build.gradle文件,并使用subprojects{}使每个子模块都可以使用这些代码 文件系统结构如下所示: Root |- App1/ |- App2/ |- Lib1/ |- Lib2/ |- build.gradle |- settings.gradle 问题是,如果我在子项目中添加一个androi

我有一个基于gradle的Android项目,有4个子模块——两个库和两个应用程序。我试图简化每个子模块的build.gradle文件,方法是将一些共享代码/配置移动到顶级build.gradle文件,并使用
subprojects{}
使每个子模块都可以使用这些代码

文件系统结构如下所示:

Root
 |- App1/
 |- App2/
 |- Lib1/
 |- Lib2/
 |- build.gradle
 |- settings.gradle
问题是,如果我在子项目中添加一个
android{}
部分,那么gradle任务就会失败。例如,这是我的顶级build.gradle文件:

subprojects { project ->
  android {
    buildToolsVersion "20.0.0"
  }
}
运行gradle将返回以下结果:

出了什么问题: 评估根项目“android”时出现问题。 找不到参数[build_7dngpra6ldok366maq0on77r7e$\u run_closure3]的方法android()_closure5@43d95624]在根项目“android”上

我搜索了类似的帖子,一些人建议在每个子项目中添加一行
apply plugin:'android'
,以暴露gradle抱怨的缺少
android()
方法。然而,这个解决方案对我来说不起作用,因为它会有效地将这一行添加到库项目中,而库项目需要
apply plugin:'android library'


当您在同一个项目中有应用程序和库时,是否有办法在
子项目{}
中使用
android{}

如果您有很多Android模块,您可能希望避免在所有模块中手动设置相同的值。因为您可能混合了android和android库项目,所以无法通过子项目关闭来应用这些插件

建议的解决办法是:

…在根项目的build.gradle中:

ext {
  compileSdkVersion = 19
  buildToolsVersion = "19.0.1"
}
在所有android模块中:

android {
  compileSdkVersion rootProject.ext.compileSdkVersion
  buildToolsVersion rootProject.ext.buildToolsVersion
}


我注意到的一点是,这在较旧版本的gradle上不起作用(我尝试使用1.10时出现了一个错误)。但在Gradle 2.1中,这似乎是正确的。

用户4118620的答案有一个小问题。。。至少在我使用Gradle 2.10的时候。 为了让安卓模块能看到钥匙。我们需要将ext放在子项目范围下

在根gradle文件中,您需要添加以下内容

subprojects {
  ext{
     <android_compile_sdk_key> = <sdk_value>
     <android_build_key> = <build_value>
  }
}
子项目{
分机{

您可以使用afterEvaluate

afterEvaluate {
        subprojects { project ->
            android {
                buildToolsVersion "20.0.0"
            }
        }
    }

我在gradle中进行了此更改,但仍然存在相同的错误我正在为我工作,请确保您编辑了正确的build.gradle文件(共有2个,请检查文件夹)
afterEvaluate {
        subprojects { project ->
            android {
                buildToolsVersion "20.0.0"
            }
        }
    }