BuildConfig的配置一般如下:
public final class BuildConfig {
public static final boolean DEBUG = false;
public static final String APPLICATION_ID = "com.qiaofang.qfangadtv";
public static final String BUILD_TYPE = "release";
public static final String FLAVOR = "dev";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0.0";
// Fields from product flavor: dev
public static final String HOST = "http://*******";
}
除了HOST字段是自定义的,其他都是根据项目配置自动生成的,那这些自动生成的值都是在哪里配置呢?
第一个字段“DEBUG”,这个字段使用的较多,一般通过此字段来决定是否打印log,很简单,例如:
if(BuildConfig.DEBUG){
Log.e();
}
这个字段的值在app module下的build文件中配置:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
debuggable false
signingConfig signingConfigs.config
}
debug {
debuggable true
signingConfig signingConfigs.config
}
}
**第二个字段“APPLICATION_ID”**就是指定生成apk包的包名,也是在build文件中指定,有如下方式配置:
//默认配置(productFlavors 里不配置的时候使用此默认配置,这里不指定的话就使用manifest中的package的值)
defaultConfig {
applicationId 'com.cui.demo.test'
}
//不同渠道配置
productFlavors {
dev{
applicationId 'com.cui.demo.test'
}
}
第三个字段“BUILD_TYPE”,选项配置和第一个字段一样是在buildTypes 中配置,值根据打包类型变化,如果是debug包值就是“debug”,如果是release包值就是“release”.
第四个字段“FLAVOR”,渠道包的名字,我这里一共配置了三个渠道:
productFlavors{
dev{
manifestPlaceholders = [
BUGLY_ENABLE_DEBUG:true,
alibaba_appkey:"",
alibaba_appsecret:""
]
buildConfigField("String", "HOST", "\"http://****/\"")
}
uat{
manifestPlaceholders = [
BUGLY_ENABLE_DEBUG:true,
alibaba_appkey:"",
alibaba_appsecret:""
]
buildConfigField("String", "HOST", "\"http://****/\"")
}
prod{
manifestPlaceholders = [
BUGLY_ENABLE_DEBUG:false,
alibaba_appkey:"",
alibaba_appsecret:""
]
buildConfigField("String", "HOST", "\"http://******/\"")
}
}
这里我选择的是dev的渠道,所以值是“dev”.
第五个字段“VERSION_CODE” 这个就是app的version_code,和第二个字段一样,可以在渠道配置里指定,否则使用defaultConfig中的配置。
第六个字段“VERSION_NAME” 同上。
以上就是系统默认字段,有时候我们想自定义一些字段来全局使用,怎么做呢?
在build文件中调用buildConfigField(String,String,String)这个方法就可以了,例如:
buildConfigField("String", "HOST", "\"http://****/\"")
buildConfigField("boolean", "isLike", "true")