在com.android.build.gradle.AppExtension_Decorated上找不到属性'xxxx'

时间:2015-10-20 02:26:21

标签: android android-studio gradle android-gradle build.gradle

我将这些行添加到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

我搜索的谷歌上的解决方案无法解决我的问题。请告诉我我错在哪里?

7 个答案:

答案 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)

  1. http://openweathermap.org/appid#use或其他天气api提供商处注册帐户以获取您的唯一API密钥
  2. 转到您的家庭gradle设置:〜/ .gradle / gradle.properties
  3. 添加以下行:

    MyOpenWeatherMapApiKey="yourUniqueApiKey"
    
    1. 重建

答案 5 :(得分:2)

我不得不在这里使用来自多个答案的一些信息来解决这个问题。

  1. it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey没问题。最高投票的答案将密钥直接放入此字段,而不是为您的用户引用“全局”密钥。
  2. 您需要通过创建帐户here
  3. 来获取开放天气地图API密钥
  4. Gradle希望您将创建开放天气地图帐户所获得的密钥放入MyOpenWeatherMapApiKey之前引用的名为OPEN_WEATHER_MAP_API_KEY的字段中。为此,请在Android Studio中打开gradle.properties并添加MyOpenWeatherMapApiKey="<Your Key Here>"
  5. 现在你应该能够毫无问题地构建应用程序了。

答案 6 :(得分:0)

接受的答案绝对正确。另一种可能更简单的方法是将字符串格式化为String,如下所示:

it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', '"xxxxxxxxxxxxxxxxxx"'