注意:本篇文章是本人阅读相关文章的总结,方便以后查阅,所有内容非原创,侵权删。
本篇文章内容来自于
Gradle之使用BuildConfig自定义常量
Android Studio之BuildConfig类
目录
- 什么是BuildConfig
- 使用BuildConfig自定义常量
- 在哪里可以配置BuildConfig
- BuildConfig+gradle.properties配合使用
1. 什么是BuildConfig
BuildConfig是android studio在打包时自动生成的一个java类。
BuildConfig在哪里?
BuildConfig类在项目工程的build/generated/source/buildConfig/androidTest或debug或release中,这些目录中的BuildConfig类中有相同的常量字段。
但这里BuildConfig中的常量字段的值是完全可以自定义的,
这样我们就可以通过定义一些常量使其在debug以及release中生成不同的字段,
2. 使用BuildConfig自定义常量
第一步:使用buildConfigField用于给BuildConfig文件添加一个字段
在app/build.gradle中的buildTypes下,我们可以为release以及debug定义我们所需要的常量:
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
//buildConfigField用于给BuildConfig文件添加一个字段
//三个参数:1.要定义的常量的类型 2.该常量的命名 3.该常量的值
buildConfigField("String", "HTTP_BASE", '"https://www.baidu.com/api/release/"')
buildConfigField("String","HAHA","\"haahahah\"")
}
debug{
buildConfigField("String", "HTTP_BASE", '"https://www.baidu.com/api/debug"')
buildConfigField("String","HAHA","\"haahahah\"")
}
}
...
}
第二步:rebuild项目
添加好这些值后,rebuild一下项目,然后在BuildConfig类中,这些我们刚刚定义的值就会显示出来,这些值就可以在整个module中使用了。
第三步:使用BuildConfig常量
Log.d("xl",BuildConfig.HTTP_BASE);
Log.d("xl",BuildConfig. HAHA);
3. 在哪里可以配置BuildConfig
来自Android 与gradle 4 --gradle配置之BuildConfig与resValue
defaultConfig {
...
buildConfigField("String","testKey","\"testValue\"")
}
buildTypes {
...
debug {
buildConfigField("String","debugtestKey","\"debugtestValue\"")
}
}
productFlavors{
Flavortest{
buildConfigField("String","testFlavorKey","\"testFlavorValue\"")
}
}
4. BuildConfig+gradle.properties配合使用
我们可以将敏感信息存放在BuildConfig文件,同时通过将敏感信息存放在工程中的gradle.properties中,可以避免将其上传到版本控制系统(svn或者git上),从而将敏感信息控制在少数人手里,而不是暴露给所有svn或者git权限的人。
但是安全级别也是很低的,我们可以对生成的APK反编译,查看BuildConfig.class文件,还是可以看到API Key的取值。
第一步:在app/build.gradle设置BuildConfig
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//buildConfigField用于给BuildConfig文件添加一个字段
buildConfigField("String","KEY","\"${AppKey}\"")
}
debug{
buildConfigField("String","KEY","\"${AppKey}\"")
}
}
...
}
第二步:""${AppKey}""取值定义在gradle.properties文件中。
AppKey=123456
第三步:使用
Log.d("xl",BuildConfig.KEY);