从AGP 7.0.0版本开始,variant.resValue
被废弃,可以使用variant.buildConfigField
来实现类似的功能。buildConfigField
可以为应用的构建配置添加一个字段,并在运行时通过BuildConfig
类访问该字段。下面是示例代码:
android {
defaultConfig {
...
// 添加一个布尔型的构建配置字段
buildConfigField("boolean", "MY_BOOL", "true")
}
buildTypes {
release {
...
// 为release构建类型添加一个字符串类型的构建配置
buildConfigField("String", "MY_STRING", "\"Hello World\"")
}
}
// 为指定flavor添加一个整型的构建配置
flavorDimensions "version"
productFlavors {
free {
dimension "version"
...
buildConfigField("int", "VERSION_CODE", "1")
}
paid {
dimension "version"
...
buildConfigField("int", "VERSION_CODE", "2")
}
}
}
在应用代码中,可以通过BuildConfig
类访问这些构建配置字段。
if(BuildConfig.MY_BOOL) {
// 如果MY_BOOL为true,则执行下面的代码
}
val str = BuildConfig.MY_STRING
// str的值为"Hello World"
val versionCode = BuildConfig.VERSION_CODE
// versionCode的值为1或2,取决于当前flavor