我的模块化Android项目在root build.gradle中使用了subprojects
,以便最小化每个子模块的build.gradle中所需的配置。例如,我可以使用它向每个模块添加自定义buildType
subprojects
afterEvaluate { project ->
if (project.plugins.findPlugin('android') ?: project.plugins.findPlugin('android-library')) {
android {
buildTypes {
qa {
initWith debug
matchingFallbacks = ['debug']
}
}
}
}
}
}
我的假设是,如果我还将这个构建配置也添加到模块级别的build.gradle中,它将覆盖项目级别定义的配置。但是,情况似乎并非如此。
如果我将以下内容添加到我的app / build.gradle中,则当选择QA buildType时,我的应用程序的后缀为'dev'。
buildTypes {
debug {
applicationIdSuffix = ".dev"
signingConfig signingConfigs.debug
}
qa {
initWith debug
applicationIdSuffix = ".qa"
matchingFallbacks = ['debug']
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
当我尝试在模块中使用特定于buildType的buildConfigFields时,同样的问题也适用;他们被忽略了。
如何获取模块的buildType声明以覆盖父项目中定义的声明?我阅读了gradle文档,并提出了类似android.buildTypes.qa{...}
的语法,但是由于未识别“方法” qa,这将导致错误。