buildConfigField取决于香精+ buildType [英] buildConfigField depending on flavor + buildType

查看:925
本文介绍了buildConfigField取决于香精+ buildType的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图定义的 buildConfigVariable 的根据的的味道 + buildType 的。理想情况下,这正是我想要的。

I'm trying to define a buildConfigVariable depending on the flavor + buildType. Ideally, this is what I want

productFlavors {
    strawberry {
        buildConfigField "String", "WS_API_KEY", name + variant.buildType.name
    }
    ... more flavors ..
}

名称的确实含有草莓,但我不知道是否有可能访问的的变体的的的 buildType 的。

name does contain "strawberry", but I don't know if it's possible to access the variant's buildType.

Android版的封我有机会获得的 BuildType 变体的,但我不能调用<$ C $放在外面C> buildConfigField

Placed outside the Android closure I do have access to the BuildType and variant, but then I can't invoke 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工厂,并返回相应的 API_KEY 根据一些 BuildConfig 常量,但我宁愿保持code配置无关。

I can easily create a Java factory and return the appropriate API_KEY depending on some BuildConfig constants, but I'd rather keep the code configuration agnostic.

推荐答案

EDIT2:0.14.2后的版本将允许这样做的:

The version after 0.14.2 will allow doing this:

applicationVariants.all { variant ->
    variant.buildConfigField "int", "VALUE", "1"
}

所以,你可以做这样的事情(相匹配的原题):

So you'd be able to do something like this (to match the original question):

applicationVariants.all { variant ->
    variant.buildConfigField "String", "WS_API_KEY", variant.productFlavors.get(0).name + '_' + variant.buildType.name
}

<打击>编辑:这不是当前可能的。该API缺少了这一点。 错误:<一href="https://$c$c.google.com/p/android/issues/detail?id=67416">https://$c$c.google.com/p/android/issues/detail?id=67416

it's not currently possible. The API is missing for this. Bug: https://code.google.com/p/android/issues/detail?id=67416

试试这个:

applicationVariants.all { variant ->
    variant.mergedFlavor.buildConfigField "String", "NAME", '"VALUE"'
}

这篇关于buildConfigField取决于香精+ buildType的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆