buildConfigField does not recover my api key from gradle.properties
我要保护我的API密钥是因为我想上传一个公共存储库,因此在我的gradle上进行了尝试,并将密钥添加到了
build.gradle
1 2 3 4 5 6 7 8 9 10 11 | buildTypes { debug { buildConfigField 'String',"FIRST_APIKEY",""FIRST_APIKEY"" buildConfigField 'String',"SECOND_APIKEY",""SECOND_APIKEY"" } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } |
gradle.properties
1 2 | FIRST_APIKEY ="apikey" SECOND_APIKEY ="apikey" |
它说apikey是当前的字母数字apikey
,当我将其实现到类中以获取该apikey时,它不会返回apikey
例如,此处我试图从该apikey解析数据,但我什么也没得到,因为无法访问它
1 | service.getData(BuildConfig.FIRST_APIKEY).... |
使用调试器生成BuildConfig.FIRST_APIKEY的结果如下
result = FIRST_APIKEY
而不是FIRST_APIKEY,它应该实现我先前在
感谢任何提示
首先,在gradle的配置阶段将属性加载到
1 2 3 4 | apply plugin: 'com.android.application' Properties localProperties = new Properties() localProperties.load(project.rootProject.file('local.properties').newDataInputStream()) |
然后您可以找到
1 2 | buildConfigField 'String',"FIRST_APIKEY", localProperties.getProperty('FIRST_APIKEY') buildConfigField 'String',"SECOND_APIKEY", localProperties.getProperty('SECOND_APIKEY') |
如果您的属性如下所示:
1 2 | FIRST_APIKEY=apikey SECOND_APIKEY=apikey |
然后您需要将
您不应分配静态字符串,而应分配变量:
1 2 | buildConfigField("String","FIRST_APIKEY",""${firstApiKey}"") resValue("string","first_api_key","${firstApiKey}") |
,它可能不关心任何
1 2 3 | def apikeys = new Properties() apikeys.load(new FileInputStream(rootProject.file('apikeys.properties'))) project.ext.set('firstApiKey', apikeys['firstApiKey']) |