Java buildConfigField不会从gradle.properties恢复我的api密钥
我试图保护我的API密钥,因为我想上传一个公共存储库,我在gradle尝试了这个,并将密钥添加到Java buildConfigField不会从gradle.properties恢复我的api密钥,java,android,gradle,android-gradle-plugin,Java,Android,Gradle,Android Gradle Plugin,我试图保护我的API密钥,因为我想上传一个公共存储库,我在gradle尝试了这个,并将密钥添加到gradle.properties文件中 格雷德尔先生 格拉德尔酒店 其中显示apikey是当前的字母数字apikey 当我将其实现到一个类中以获取apikey时,它不会返回apikey 例如,这里我试图解析来自apikey的数据,但我什么也没有得到,因为它无法访问 service.getData(BuildConfig.FIRST_APIKEY).... BuildConfig.FIRST\u A
gradle.properties
文件中
格雷德尔先生
格拉德尔酒店
其中显示apikey是当前的字母数字apikey
当我将其实现到一个类中以获取apikey时,它不会返回apikey
例如,这里我试图解析来自apikey的数据,但我什么也没有得到,因为它无法访问
service.getData(BuildConfig.FIRST_APIKEY)....
BuildConfig.FIRST\u APIKEY与调试器的结果如下
结果=第一个键
它应该实现我以前在gradle.properties
文件中配置的APIKEY,而不是第一个APIKEY
感谢您提供的提示您不应该指定静态字符串,而应该指定一个变量:
buildConfigField("String", "FIRST_APIKEY", "\"${firstApiKey}\"")
resValue("string", "first_api_key", "${firstApiKey}")
它可能不关心任何.properties
,除非加载它们;例如:
def apikeys = new Properties()
apikeys.load(new FileInputStream(rootProject.file('apikeys.properties')))
project.ext.set('firstApiKey', apikeys['firstApiKey'])
不应指定静态字符串,而应指定变量:
buildConfigField("String", "FIRST_APIKEY", "\"${firstApiKey}\"")
resValue("string", "first_api_key", "${firstApiKey}")
它可能不关心任何.properties
,除非加载它们;例如:
def apikeys = new Properties()
apikeys.load(new FileInputStream(rootProject.file('apikeys.properties')))
project.ext.set('firstApiKey', apikeys['firstApiKey'])
首先,在gradle的配置阶段,将属性加载到
properties
对象:
apply plugin: 'com.android.application'
Properties localProperties = new Properties()
localProperties.load(project.rootProject.file('local.properties').newDataInputStream())
然后您可以找到buildConfigField
的属性:
buildConfigField 'String', "FIRST_APIKEY", localProperties.getProperty('FIRST_APIKEY')
buildConfigField 'String', "SECOND_APIKEY", localProperties.getProperty('SECOND_APIKEY')
如果您的属性如下所示:
FIRST_APIKEY=apikey
SECOND_APIKEY=apikey
然后您需要将
localProperties.getProperty('FIRST\u APIKEY')
替换为“\”${props.getProperty('FIRST\u APIKEY')}\”
首先,在gradle的配置阶段将您的属性加载到properties
对象:
apply plugin: 'com.android.application'
Properties localProperties = new Properties()
localProperties.load(project.rootProject.file('local.properties').newDataInputStream())
然后您可以找到buildConfigField
的属性:
buildConfigField 'String', "FIRST_APIKEY", localProperties.getProperty('FIRST_APIKEY')
buildConfigField 'String', "SECOND_APIKEY", localProperties.getProperty('SECOND_APIKEY')
如果您的属性如下所示:
FIRST_APIKEY=apikey
SECOND_APIKEY=apikey
然后,您需要将localProperties.getProperty('FIRST\u APIKEY')
替换为“\”${props.getProperty('FIRST\u APIKEY')}\”