我正在尝试在build.gradle文件中嵌入一些服务器地址,但我不确定如何执行此操作。我知道在maven中,你可以写
<content.host>http://test.mysite.com</content.host>
我可以在我的Android应用程序中使用content.host。在gradle中,我知道您可以通过
创建构建类型 buildTypes {
testBuild.initWith(buildTypes.debug)
testBuild{ /*test server info goes here*/ }
}
但我不确定如何使用相同的方法在gradle中定义content.host。是否有另一种方法可以在gradle中定义content.host,或者有没有办法向buildTypes添加自定义属性?
干杯,
Derril
答案 0 :(得分:31)
Gradle for Android提供buildConfigField
,允许您将任意数据成员添加到代码生成的BuildConfig
类中:
buildTypes {
debug {
buildConfigField "String", "SERVER_URL", '"http://test.this-is-so-fake.com"'
}
release {
buildConfigField "String", "SERVER_URL", '"http://prod.this-is-so-fake.com"'
}
mezzanine.initWith(buildTypes.release)
mezzanine {
buildConfigField "String", "SERVER_URL", '"http://stage.this-is-so-fake.com"'
}
}
在Java代码中,您可以引用BuildConfig.SERVER_URL
,它将根据您在编译时选择的构建类型填充字符串。
答案 1 :(得分:4)
要仅使用与构建类型和产品口味无关的字段,您可以通过以下方式将其添加到defaultConfig
:
defaultConfig {
...
buildConfigField "String", "OS", '"android"'
}
然后BuildConfig
看起来像这样:
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.example.app";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
// Fields from default config.
public static final String OS = "android";
}