【发布时间】:2014-04-25 17:21:27
【问题描述】:
我正在尝试根据 flavor + buildType 定义一个 buildConfigVariable。理想情况下,这就是我想要的
productFlavors {
strawberry {
buildConfigField "String", "WS_API_KEY", name + variant.buildType.name
}
... more flavors ..
}
name 确实包含“草莓”,但我不知道是否可以访问 variant 的 buildType。
放置在 Android 闭包之外我确实可以访问 BuildType 和 variant,但是我无法调用 buildConfigField
android.applicationVariants.all { variant ->
println "****************************"
println "variant: ${variant.name}"
println "flavor: ${variant.flavorName}"
println "****************************"
if (variant.buildType.name == 'release') {
if (variant.flavorName == 'strawberry') {
buildConfigField "String", "WS_API_KEY", '"strawberry_release"'
} else {
buildConfigField "String", "WS_API_KEY", '"chocolate_release"'
}
} else if(variant.buildType.name == 'debug') {
if (variant.flavorName == 'strawberry') {
buildConfigField "String", "WS_API_KEY", '"strawberry_debug"'
} else {
buildConfigField "String", "WS_API_KEY", '"chocolate_debug"'
}
}
****************************
variant: strawberryRelease
flavor: strawberry
****************************
org.gradle.api.internal.MissingMethodException:
Could not find method buildConfigField()
for arguments [String, WS_API_KEY, "strawberry_release"]
我可以轻松创建 Java 工厂并根据一些 BuildConfig 常量返回适当的 API_KEY,但我宁愿保持代码配置不可知。
【问题讨论】:
-
这可能会有所帮助。 stackoverflow.com/a/50983681/3333878
标签: android android-gradle-plugin android-productflavors