用gradle设置常量值

wnc*_*_21 13 android gradle

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

我有

API.java 其中包含

BASE_URL = "http://debug.server.com"
Run Code Online (Sandbox Code Playgroud)

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

如何在构建时替换此值?

Fif*_*eep 21

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

你可以在java中查询这样:

if (BuildConfig.DEBUG) {
    BASE_URL = "http://debug.server.com"
} else {
    BASE_URL = "http://release.server.com"
}
Run Code Online (Sandbox Code Playgroud)

或者与单线相同:

BASE_URL = BuildConfig.DEBUG ? "http://debug.server.com" : "http://release.server.com"
Run Code Online (Sandbox Code Playgroud)

要么

您可以使用gradle 实际设置类的BASE_URL内部,BuildConfig如下所示:

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

        release {
            buildConfigField "String", "BASE_URL", '"http://release.server.com"'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 如果我使用双引号而不是单引号,你的答案只适用于我,并且转义URL字符串,如下所示:android {buildTypes {debug {buildConfigField"String","BASE_URL","\"http://debug.server. com \""}发布{buildConfigField"String","BASE_URL","\"http://release.server.com \""}}} (3认同)