Android 如何覆盖模块中的gradle子项目配置?

Android 如何覆盖模块中的gradle子项目配置?,android,gradle,android-gradle-plugin,android-module,Android,Gradle,Android Gradle Plugin,Android Module,我的模块化Android项目使用root build.gradle中的子项目,以最小化每个子模块的build.gradle中所需的配置。例如,我可以使用它向每个模块添加自定义buildType subprojects afterEvaluate { project -> if (project.plugins.findPlugin('android') ?: project.plugins.findPlugin('android-library')) {

我的模块化Android项目使用root build.gradle中的
子项目
,以最小化每个子模块的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时,我的app将以后缀“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