注意:本篇文章是本人閱讀相關(guān)文章的總結(jié),方便以后查閱召耘,所有內(nèi)容非原創(chuàng),侵權(quán)刪。
本篇文章內(nèi)容來自于
Gradle之使用BuildConfig自定義常量
Android Studio之BuildConfig類
目錄
- 什么是BuildConfig
- 使用BuildConfig自定義常量
- 在哪里可以配置BuildConfig
- BuildConfig+gradle.properties配合使用
1. 什么是BuildConfig
BuildConfig是android studio在打包時(shí)自動(dòng)生成的一個(gè)java類褐隆。
BuildConfig在哪里污它?
BuildConfig類在項(xiàng)目工程的build/generated/source/buildConfig/androidTest或debug或release中,這些目錄中的BuildConfig類中有相同的常量字段。
但這里BuildConfig中的常量字段的值是完全可以自定義的衫贬,
這樣我們就可以通過定義一些常量使其在debug以及release中生成不同的字段德澈,
2. 使用BuildConfig自定義常量
第一步:使用buildConfigField用于給BuildConfig文件添加一個(gè)字段
在app/build.gradle中的buildTypes下,我們可以為release以及debug定義我們所需要的常量:
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
//buildConfigField用于給BuildConfig文件添加一個(gè)字段
//三個(gè)參數(shù):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項(xiàng)目
添加好這些值后固惯,rebuild一下項(xiàng)目梆造,然后在BuildConfig類中,這些我們剛剛定義的值就會(huì)顯示出來葬毫,這些值就可以在整個(gè)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文件,同時(shí)通過將敏感信息存放在工程中的gradle.properties中贴捡,可以避免將其上傳到版本控制系統(tǒng)(svn或者git上)忽肛,從而將敏感信息控制在少數(shù)人手里,而不是暴露給所有svn或者git權(quán)限的人栈暇。
但是安全級(jí)別也是很低的麻裁,我們可以對(duì)生成的APK反編譯,查看BuildConfig.class文件源祈,還是可以看到API Key的取值煎源。
第一步:在app/build.gradle設(shè)置BuildConfig
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//buildConfigField用于給BuildConfig文件添加一個(gè)字段
buildConfigField("String","KEY","\"${AppKey}\"")
}
debug{
buildConfigField("String","KEY","\"${AppKey}\"")
}
}
...
}
第二步:""${AppKey}""取值定義在gradle.properties文件中。
AppKey=123456
第三步:使用
Log.d("xl",BuildConfig.KEY);