Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java buildConfigField不会从gradle.properties恢复我的api密钥_Java_Android_Gradle_Android Gradle Plugin - Fatal编程技术网

Java buildConfigField不会从gradle.properties恢复我的api密钥

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

我试图保护我的API密钥,因为我想上传一个公共存储库,我在gradle尝试了这个,并将密钥添加到
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')}\”