注意:本篇文章是本人閱讀相關(guān)文章的總結(jié),方便以后查閱,所有內(nèi)容非原創(chuàng),侵權(quán)刪。
本篇文章來自的內(nèi)容會在相應(yīng)的知識中給出鏈接
目錄
- gradle.properties介紹
- BuildConfig+gradle.properties配合使用
- 使用Gradle打包時將敏感信息配置在gradle.properties中
- resValue+gradle.properties配合使用
1. gradle.properties介紹
AS項目的根目錄下有一個gradle.properties文件,專門用來配置全局鍵值對數(shù)據(jù)的??捎糜诖娣琶舾袛?shù)據(jù)。
將它從git版本控制中排除,這樣gradle.properties文件只能保留在本地,從而不用擔心keystore文件等敏感信息泄漏。
2. BuildConfig+gradle.properties配合使用
我們可以將敏感信息存放在BuildConfig文件,同時通過將敏感信息存放在工程中的gradle.properties中,可以避免將其上傳到版本控制系統(tǒng)(svn或者git上),從而將敏感信息控制在少數(shù)人手里,而不是暴露給所有svn或者git權(quán)限的人。
但是安全級別也是很低的,我們可以對生成的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文件添加一個字段
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中存放敏感數(shù)據(jù)
KEY_PATH=/Users/apple/Desktop/androddemo/haha.jks
KEY_PASS=123456
ALIAS_NAME=key
ALIAS_PASS=123456
2.在build.gradle中讀取數(shù)據(jù)
編輯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設(shè)置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中設(shè)置值
TOKEN=token123
第三步:使用
//java代碼中使用
Log.d("xl",getResources().getString(R.string.app_token));
//xml文件中使用
android:text="@string/app_token"