多次调用Gradle buildConfig

7

我遇到了一个问题,无法找到一种在Gradle中向我的BuildConfig添加多行的方法。似乎当我第二次调用buildConfig时,第一次的内容就会消失。

我最初是从不同的位置添加这个buildConfig的,但如果我这样做,就能创建一个最小可复现的测试:

buildTypes {
    debug {
        versionNameSuffix "-DEBUG"
        buildConfig "public static final int THING_ONE = 1;"
        buildConfig "public static final int THING_TWO = 2;"
    }
    release {
        zipAlign true
        buildConfig "public static final int THING_ONE = 3;"
        buildConfig "public static final int THING_TWO = 4;"
    }
}

然后当我尝试在代码中使用它时:

public class Thing {
    public static final int THING = com.example.BuildConfig.THING_ONE + com.example.BuildConfig.THING_TWO;
}

我会遇到这个错误:
/Example/src/main/java/com/example/Thing.java:2: cannot find symbol
symbol  : variable THING_ONE
location: class com.example.BuildConfig
public static final int THING = com.example.BuildConfig.THING_ONE + com.example.BuildConfig.THING_TWO;

是否有一种方法可以为每个productFlavor或buildType添加多个不同的行到buildConfig中(而不是使用多行字符串进行多个buildConfig调用)?


6
如果您正在使用Gradle for Android插件的0.7.+版本,请尝试使用buildConfigField替代buildConfig,例如:buildConfigField "String", "SERVER_URL", '"http://stage.this-is-so-fake.com"'。请注意,不要改变原来的意思。 - CommonsWare
2
如果你正在寻找如何在BuildTypes中覆盖buildConfigField值,请查看@CommonsWare的示例:https://github.com/commonsguy/cw-omnibus/blob/0e5e5893df7a97823a100aa15d2d5bb961bfff71/Gradle/HelloBuildConfig/build.gradle - gdelente
1个回答

14

正如@CommonsWare所指出的那样,自从Gradle 1.9(Android Studio 0.4.0)以来,您必须像下面这样声明BuildConfig字段:

buildTypes {
    debug {
        versionNameSuffix "-DEBUG"
        buildConfigField "int", "THING_ONE", "1"
        buildConfigField "int", "THING_TWO", "2"
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接