注意:本篇文章是本人阅读相关文章的总结,方便以后查阅,所有内容非原创,侵权删。
本篇文章来自的内容会在相应的知识中给出链接
目录
- gradle.properties介绍
- BuildConfig+gradle.properties配合使用
- 使用Gradle打包时将敏感信息配置在gradle.properties中
- resValue+gradle.properties配合使用
1. gradle.properties介绍
AS项目的根目录下有一个gradle.properties文件,专门用来配置全局键值对数据的。可用于存放敏感数据。
将它从git版本控制中排除,这样gradle.properties文件只能保留在本地,从而不用担心keystore文件等敏感信息泄漏。
2. 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);
3. 使用Gradle打包时将敏感信息配置在gradle.properties中
可参考使用Gradle打包
1.在gradle.properties中存放敏感数据
KEY_PATH=/Users/apple/Desktop/androddemo/haha.jks
KEY_PASS=123456
ALIAS_NAME=key
ALIAS_PASS=123456
2.在build.gradle中读取数据
编辑app/build.gradle
android {
...
signingConfigs{
config{ //配置keystore文件的各种信息
storeFile file(KEY_PATH)
storePassword KEY_PASS
keyAlias ALIAS_NAME
keyPassword ALIAS_PASS
}
}
...
}
4. resValue+gradle.properties配合使用
第一步:在app/build.gradle设置resValue
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
resValue("string","app_token","${TOKEN}")
}
debug{
resValue("string","app_token","${TOKEN}")
}
...
}
第二步:在gradle.properties中设置值
TOKEN=token123
第三步:使用
//java代码中使用
Log.d("xl",getResources().getString(R.string.app_token));
//xml文件中使用
android:text="@string/app_token"