Mar*_*ues 15 android android-gradle-plugin android-productflavors
我试图定义一个buildConfigVariable取决于香精 + buildType.理想情况下,这就是我想要的
productFlavors {
strawberry {
buildConfigField "String", "WS_API_KEY", name + variant.buildType.name
}
... more flavors ..
}
Run Code Online (Sandbox Code Playgroud)
name确实包含"strawberry",但我不知道是否可以访问variant的buildType.
放置在Android闭包之外我可以访问BuildType和变体,但后来我无法调用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"]
Run Code Online (Sandbox Code Playgroud)
我可以轻松地创建一个Java工厂并API_KEY根据一些BuildConfig常量返回适当的,但我宁愿保持代码配置不可知.
Xav*_*het 15
Edit2:0.14.2之后的版本允许这样做:
applicationVariants.all { variant ->
variant.buildConfigField "int", "VALUE", "1"
}
Run Code Online (Sandbox Code Playgroud)
所以你可以做这样的事情(以匹配原始问题):
applicationVariants.all { variant ->
variant.buildConfigField "String", "WS_API_KEY", variant.productFlavors.get(0).name + '_' + variant.buildType.name
}
Run Code Online (Sandbox Code Playgroud)
编辑:目前无法实现.缺少API.错误:https://code.google.com/p/android/issues/detail? id = 67416
试试这个:
applicationVariants.all { variant ->
variant.mergedFlavor.buildConfigField "String", "NAME", '"VALUE"'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9655 次 |
| 最近记录: |