如何使用Gradle将Androidconfiguration注入到每个子项目?

而不是复制每个子项目中的androidconfiguration块:

android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 9 targetSdkVersion 14 } } 

我宁愿把它放在顶层/根gradle构build文件中,如:

 subprojects{ android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 9 targetSdkVersion 14 } } } 

但是,这是行不通的。 🙁

错误:“..不能find方法android()的参数…”

Solutions Collecting From Web of "如何使用Gradle将Androidconfiguration注入到每个子项目?"

解决scheme竟然是:

 subprojects{ afterEvaluate { android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 9 targetSdkVersion 14 } } } } 

据我所知,这是因为在评估时间处理/使用android {…}意味着一旦它碰到了,它就必须存在(即明确写入或作为“应用插件”的一部分)根构build文件中的子项目。 更准确地说,这意味着顶层项目必须定义它(这可能不是因为它可能不是“android”或“android-library”构build本身)。 但是,如果我们把它推到评估之后,那么它可以直接使用每个子项目中可用的内容。

这个问题+解决scheme还假设所有的子项目都是某种forms的android项目(在我的情况是正确的,但不一定是其他的)。 更安全的答案是使用:

 subprojects{ afterEvaluate { if(it.hasProperty('android')){ android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 9 targetSdkVersion 14 } } } } }