Мой модульный проект Android использует subprojects
в корневом каталоге 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, мое приложение получит суффикс 'dev', когда выбран QA buildType.
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 не распознается.