用gradle设置常量值

时间:2014-10-20 10:05:34

标签: android gradle

我刚刚转到android gradle构建系统,我不清楚如何设置常量值。

e.g。我有

API.java包含

BASE_URL = "http://debug.server.com"

但是当gradle构建版本时,我需要BASE_URL"http://release.server.com"

如何在构建时替换此值?

2 个答案:

答案 0 :(得分:21)

Gradle生成一个名为BuildConfig的类,其中包含静态成员(例如布尔DEBUG,对于调试变体,它设置为true。)

您可以像在java中一样查询:

if (BuildConfig.DEBUG) {
    BASE_URL = "http://debug.server.com"
} else {
    BASE_URL = "http://release.server.com"
}

或与单行相同:

BASE_URL = BuildConfig.DEBUG ? "http://debug.server.com" : "http://release.server.com"

您实际上可以使用gradle在BASE_URL类中设置BuildConfig,如下所示:

android {
    buildTypes {
        debug {
            buildConfigField "String", "BASE_URL", '"http://debug.server.com"'
        }

        release {
            buildConfigField "String", "BASE_URL", '"http://release.server.com"'
        }
    }
}

请注意gradle中值的 单引号和双引号 ,正如其他人在评论中提到的那样。这样,双引号就成了价值的一部分。

因此,静态引用BuildConfig.BASE_URL将指向相应的URL(即“debug.server.com”用于调试,“release.server.com”用于发布)

答案 1 :(得分:0)

十五羊的回答是正确的。只想为两个以上的环境留下解决方案。

两种口味的分期和生活。

productFlavors {
    staging {
        ...
    }
    production {
        ...
    }
}

整个app配置依赖于当前的ENV。使用:

public static String ENV_DEVELOPMENT = "development";
public static String ENV_STAGING = "staging";
public static String ENV_PRODUCTION = "production";

ENV = BuildConfig.DEBUG ? ENV_DEVELOPMENT : BuildConfig.FLAVOR;

我可以在本地测试时切换所有不同的ENV,但如果释放则强制暂存/实时设置。