找不到属性';xxxx和x27;在com.android.build.gradle.AppExtension\u上
在将以下行添加到gradle文件后,我出现了此错误:找不到属性';xxxx和x27;在com.android.build.gradle.AppExtension\u上,android,android-studio,gradle,android-gradle-plugin,build.gradle,Android,Android Studio,Gradle,Android Gradle Plugin,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@c
buildTypes.each {
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey
}
然后日志显示:
Could not find property 'MyOpenWeatherMapApiKey' on com.android.build.gradle.AppExtension_Decorated@c3b784
我在谷歌上搜索的解决方案无法解决我的问题。请告诉我哪里错了?因为您使用的是
字符串
,所以必须使用以下语法:
buildConfigField "String" , "OPEN_WEATHER_MAP_API_KEY" , "\"XXXXX-XXXXX-XXX\""
最后一个参数必须是字符串
否则,您可以使用如下内容:
resValue "string", "OPEN_WEATHER_MAP_API_KEY", "\"XXXXX-XXXXX-XXX\""
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', '"xxxxxxxxxxxxxxxxxx"'
第一种情况是在BuildConfig
文件中生成一个常量。第二种情况生成一个字符串资源值,可以使用
@string/OPEN\u WEATHER\u MAP\u API\u KEY
注释访问该值。OPEN\u WEATHER\u MAP\u API\u KEY'引用一个名为“myopenweathermappikey”的渐变属性,该属性需要配置
一个原因是构建系统要为此生成代码。另一种可能是,这样您就不会意外地将API密钥提交给GitHub或其他公共repo
您应该做的是向“gradle.properties”文件添加一个条目,如下所示:
resValue "string", "OPEN_WEATHER_MAP_API_KEY", "\"XXXXX-XXXXX-XXX\""
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', '"xxxxxxxxxxxxxxxxxx"'
MyOpenWeatherMapApiKey=“[YOUR-API-KEY]”
然后将您的项目与gradle同步(如果使用Android Studio)您应该在本地用户设置中定义
MyOpenWeatherMapApiKey
,因此,请转到您的主页gradle设置:~/.gradle/gradle.properties
(Win:%USERPROFILE%\.gradle\gradle.properties
)。如果gradle.properties
不存在,只需创建它即可
在文件中添加以下行:
myopenweathermappikey=“XXXXXXXXXXXXXXXXXXXXXXXXXXXX”
(不幸的是,Android Udacity的老师们并没有很好地从gradle的角度解释它是如何工作的;正如我没有很容易从gradle找到任何关于it.buildConfigField如何工作的文档一样)请参见“需要开放天气图API密钥”在的底部,我不得不使用这里的多个答案中的一些信息来解决这个问题
it.buildConfigField'String'、'OPEN\u WEATHER\u MAP\u API\u KEY',myopenweathermappikey
可以。排名靠前的答案将密钥直接放入此字段,而不是为您的用户引用“全局”密钥MyOpenWeatherMapApiKey
的字段中,该字段由之前的Open\u Weather\u Map\u API\u key
引用。为此,请在Android Studio中打开gradle.properties并添加MyOpenWeatherMapApiKey=“”
MyOpenWeatherMapApiKey="yourUniqueApiKey"
公认的答案是绝对正确的。另一种可能更简单的方法是将字符串中的值格式化为如下所示:
resValue "string", "OPEN_WEATHER_MAP_API_KEY", "\"XXXXX-XXXXX-XXX\""
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', '"xxxxxxxxxxxxxxxxxx"'
什么是MyOpenWeatherMapApiKey?你完全正确。这一点教得很差(使用文本节点IIRC),将在课程的下一次迭代中更改。实际上,我们将在这里使用您的方法,因为它显然是正确的做事方式。FWIW,这门课教得不好的原因之一是,在课程最初拍摄时,开放式天气图不需要API密钥,因此需要快速“绷带”修复,以防止一切破坏。无论如何,请随时给我发电子邮件到gmail.com的halfjew22,我们可以聊聊展示这些概念的最佳方式。干杯@我已经添加了这一点,但它显示
错误:(21,0)在com.android.build.gradle.AppExtension上找不到属性“MyOpenWeatherMapApiKey”_Decorated@12b151b.
@SiddharthVenu在这里添加MyOpenWeatherMapApiKey=“API\u KEY\u”时,它对我起了作用转到Sunshine-Version-2目录中的gradle.properties文件。@VishnuM。这里也一样,但说明中说要在项目目录的.gradle
文件夹中创建另一个gradle.properties
。他们告诉您必须这样做,因为项目目录中的gradle.properties
将包含在Git中,其他人可以看到key.FYI-我必须在这里阅读,以了解如何使其工作。我记得在Udacity课程中没有提到。课程中还有很多类似的挑战。