Я пытаюсь установить пользовательское значение в блоке productFlavors
и получить доступ к нему внутри applicationVariants.all
в приложении Android * build.gradle
.
В app/build.gradle
Я определяю 2 варианта:
android {
compileSdkVersion rootProject.ext.compileSdkVersion
defaultConfig {
applicationId ...
}
buildTypes {
debug {...}
release {...}
}
flavorDimensions "project"
productFlavors {
project1 {
dimension "project"
manifestPlaceholders.put('appName', 'Project 1')
ext.someVar = "someValue1"
// ext is a DefaultExtraPropertiesExtension
}
project2 {
dimension "project"
manifestPlaceholders.put('appName', 'Project 2')
ext.someVar = "someValue2"
}
}
}
И в какой-то момент у меня есть блок, в котором я заинтересован в доступе к значению:
afterEvaluate {
applicationVariants.all { def variant ->
def flavor = variant.mergedFlavor;
// MergedFlavor does not seem to have a reference to `ext`.
// how do I get the value of `someVar`?
}
}
Я знаю, что можно добавить другое свойство к manifestPlaceholders
и получить доступон использует flavor.manifestPlaceholders.get("someVar")
, но мне это кажется немного грязным, так как я не использую это значение вне рамок Gradle, и предпочел бы использовать ext или какой-то другой, более чистый подход.
Есть ли здесьболее общий, менее навязчивый способ сделать это?