我将这些行添加到gradle文件后出现此错误:
buildTypes.each {
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey
}
然后是日志显示:
Could not find property 'MyOpenWeatherMapApiKey' on com.android.build.gradle.AppExtension_Decorated@c3b784
我搜索的谷歌上的解决方案无法解决我的问题。请告诉我我错在哪里?
答案 0 :(得分:26)
由于您使用的是String
,因此您必须使用以下语法:
buildConfigField "String" , "OPEN_WEATHER_MAP_API_KEY" , "\"XXXXX-XXXXX-XXX\""
最后一个参数必须是String
否则你可以使用这样的东西:
resValue "string", "OPEN_WEATHER_MAP_API_KEY", "\"XXXXX-XXXXX-XXX\""
第一种情况在BuildConfig
文件中生成常量
第二种情况生成可以使用@string/OPEN_WEATHER_MAP_API_KEY
注释访问的字符串资源值。
答案 1 :(得分:12)
您应该在本地用户设置中定义MyOpenWeatherMapApiKey
,因此,请转到您的家庭gradle设置:~/.gradle/gradle.properties
(Win:%USERPROFILE%\.gradle\gradle.properties
)。如果gradle.properties
不存在 - 只需创建它。
在文件中添加以下行:
MyOpenWeatherMapApiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
(不幸的是,Android Udacity教师不太好解释它是如何从gradle角度运行的;同样我还没有轻易找到gradle如何 it.buildConfigField 工作的任何文档)< / p>
答案 2 :(得分:11)
'OPEN_WEATHER_MAP_API_KEY'引用了一个名为'MyOpenWeatherMapApiKey'的gradle属性,需要进行配置。
一个原因是构建系统为此生成代码。另一个可能是你不小心将API-KEY提交给GitHub或其他公共仓库。
您应该做的是在'gradle.properties'文件中添加一个条目,如下所示:
MyOpenWeatherMapApiKey = “[YOUR-API-KEY]”
然后将您的项目与gradle同步(如果使用Android Studio)
答案 3 :(得分:5)
参见&#34;需要打开气象图API密钥。&#34;在https://github.com/udacity/Sunshine-Version-2
的底部答案 4 :(得分:4)
添加以下行:
MyOpenWeatherMapApiKey="yourUniqueApiKey"
答案 5 :(得分:2)
我不得不在这里使用来自多个答案的一些信息来解决这个问题。
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey
没问题。最高投票的答案将密钥直接放入此字段,而不是为您的用户引用“全局”密钥。MyOpenWeatherMapApiKey
之前引用的名为OPEN_WEATHER_MAP_API_KEY
的字段中。为此,请在Android Studio中打开gradle.properties并添加MyOpenWeatherMapApiKey="<Your Key Here>"
现在你应该能够毫无问题地构建应用程序了。
答案 6 :(得分:0)
接受的答案绝对正确。另一种可能更简单的方法是将字符串格式化为String,如下所示:
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', '"xxxxxxxxxxxxxxxxxx"'