每个项目中,
Gradle
都会帮助我们生成一个BuildConfig
,那么:
- 这个类有何用处?
- 是在项目的编译期间,哪个环节、如何生成的?
BuildConfig 的用处
项目编译成功后,会在每一个 module
下的 build/generated/source/buildConfig/debug(release)/包名
下生成一个 BuildConfig
文件。内容如下:
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.example.myapplication";
public static final String BUILD_TYPE = "debug";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
}
从内容可以很明显的看出来, BuildConfig
是根据 module
下的 build.gradle
生成的。
其中最常用的是 BuildConfig.DEBUG
,判断当前包环境是否是 debug
环境,用来控制日志的输出等。这个值会根据开发者的 Build
类型自动设定,不需要手动设置。
除此之外,我们还可以自定义添加 BuildConfig
里的常量,比如设置开发环境和正式环境下的网络请求地址等。
在 module
的 build.gradle
文件中的 defaultConfig
和 buildTypes
节点中使用 buildConfigField
关键字即可。区别在于 buildTypes
会根据 Build
类型引用不同的值, defaultConfig
是通用的值。
buildConfigField "String", "BASE_STRING", "\"string content\""
这句代码中三个参数分别是 数据类型,常量名,常量值。
注意的是 BuildConfig
是通过 String
读取数据的,所以当常量值数据类型为 String
时,需要在双引号里面在添加一个双引号并转义。
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
buildConfigField "String", "BASE_STRING", "\"string content\""
buildConfigField "boolean", "BASE_BOOLEAN"