在 com.android.build.gradle.AppExtension_Decorated 上找不到 属性 'xxxx'
Could not find property 'xxxx' on com.android.build.gradle.AppExtension_Decorated
我将这些行添加到我的 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
我在google上搜索的解决方案无法解决我的问题。请告诉我哪里错了?
由于您使用的是 String
,因此您必须使用以下语法:
buildConfigField "String" , "OPEN_WEATHER_MAP_API_KEY" , "\"XXXXX-XXXXX-XXX\""
最后一个参数必须是字符串
否则你可以使用这样的东西:
resValue "string", "OPEN_WEATHER_MAP_API_KEY", "\"XXXXX-XXXXX-XXX\""
第一种情况在您的 BuildConfig
文件中生成一个常量。
第二种情况生成一个字符串资源值,可以使用 @string/OPEN_WEATHER_MAP_API_KEY
注释访问。
'OPEN_WEATHER_MAP_API_KEY' 引用了需要配置的名为 'MyOpenWeatherMapApiKey' 的 gradle 属性。
一个原因是构建系统为此生成代码。另一个可能是您不会不小心将 API-KEY 提交给 GitHub 或其他 public 存储库。
您应该做的是像这样在 'gradle.properties' 文件中添加一个条目:
MyOpenWeatherMapApiKey="[你的-API-KEY]"
然后将您的项目与 gradle 同步(如果使用 Android Studio)
您应该在 本地用户 设置中定义 MyOpenWeatherMapApiKey
,因此,转到您的家 gradle 设置:~/.gradle/gradle.properties
(Win: %USERPROFILE%\.gradle\gradle.properties
)。如果 gradle.properties
不存在 - 只需创建它。
在文件中添加以下行:
MyOpenWeatherMapApiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
(不幸的是,Android Udacity 老师不太好从 gradle 的角度解释它是如何工作的;就像我不容易从 gradle 找到任何文档一样it.buildConfigField 是如何工作的)
参见“打开天气图 API 需要密钥。”在 https://github.com/udacity/Sunshine-Version-2
的底部
我不得不使用此处多个答案中的一些信息来解决此问题。
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey
没问题。投票最高的答案将密钥直接放入此字段,而不是为您的用户引用 "global" 密钥。
- 您需要通过创建一个帐户来获取一个开放天气图API密钥here
- Gradle 希望您将通过创建 Open Weather Map 帐户获得的密钥放入名为
MyOpenWeatherMapApiKey
的字段中,该字段由之前的 OPEN_WEATHER_MAP_API_KEY
引用。为此,请在 Android Studio 中打开 gradle.properties 并添加 MyOpenWeatherMapApiKey="<Your Key Here>"
现在您应该可以毫无问题地构建应用程序了。
- 在 http://openweathermap.org/appid#use 或其他天气 api 提供商处注册帐户以获得您的唯一 API 密钥
- 去你家gradle设置:~/.gradle/gradle.properties
添加这一行:
MyOpenWeatherMapApiKey="yourUniqueApiKey"
- 重建它
接受的答案是绝对正确的。另一种方法,可能更简单,将内部的值格式化为 String 是这样的:
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', '"xxxxxxxxxxxxxxxxxx"'
我将这些行添加到我的 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
我在google上搜索的解决方案无法解决我的问题。请告诉我哪里错了?
由于您使用的是 String
,因此您必须使用以下语法:
buildConfigField "String" , "OPEN_WEATHER_MAP_API_KEY" , "\"XXXXX-XXXXX-XXX\""
最后一个参数必须是字符串
否则你可以使用这样的东西:
resValue "string", "OPEN_WEATHER_MAP_API_KEY", "\"XXXXX-XXXXX-XXX\""
第一种情况在您的 BuildConfig
文件中生成一个常量。
第二种情况生成一个字符串资源值,可以使用 @string/OPEN_WEATHER_MAP_API_KEY
注释访问。
'OPEN_WEATHER_MAP_API_KEY' 引用了需要配置的名为 'MyOpenWeatherMapApiKey' 的 gradle 属性。
一个原因是构建系统为此生成代码。另一个可能是您不会不小心将 API-KEY 提交给 GitHub 或其他 public 存储库。
您应该做的是像这样在 'gradle.properties' 文件中添加一个条目:
MyOpenWeatherMapApiKey="[你的-API-KEY]"
然后将您的项目与 gradle 同步(如果使用 Android Studio)
您应该在 本地用户 设置中定义 MyOpenWeatherMapApiKey
,因此,转到您的家 gradle 设置:~/.gradle/gradle.properties
(Win: %USERPROFILE%\.gradle\gradle.properties
)。如果 gradle.properties
不存在 - 只需创建它。
在文件中添加以下行:
MyOpenWeatherMapApiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
(不幸的是,Android Udacity 老师不太好从 gradle 的角度解释它是如何工作的;就像我不容易从 gradle 找到任何文档一样it.buildConfigField 是如何工作的)
参见“打开天气图 API 需要密钥。”在 https://github.com/udacity/Sunshine-Version-2
的底部我不得不使用此处多个答案中的一些信息来解决此问题。
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey
没问题。投票最高的答案将密钥直接放入此字段,而不是为您的用户引用 "global" 密钥。- 您需要通过创建一个帐户来获取一个开放天气图API密钥here
- Gradle 希望您将通过创建 Open Weather Map 帐户获得的密钥放入名为
MyOpenWeatherMapApiKey
的字段中,该字段由之前的OPEN_WEATHER_MAP_API_KEY
引用。为此,请在 Android Studio 中打开 gradle.properties 并添加MyOpenWeatherMapApiKey="<Your Key Here>"
现在您应该可以毫无问题地构建应用程序了。
- 在 http://openweathermap.org/appid#use 或其他天气 api 提供商处注册帐户以获得您的唯一 API 密钥
- 去你家gradle设置:~/.gradle/gradle.properties
添加这一行:
MyOpenWeatherMapApiKey="yourUniqueApiKey"
- 重建它
接受的答案是绝对正确的。另一种方法,可能更简单,将内部的值格式化为 String 是这样的:
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', '"xxxxxxxxxxxxxxxxxx"'