Не удалось найти свойство "xxxx" на com.android.build.gradle.AppExtension_Decorated
Я получил эту ошибку после добавления этих строк в мой файл gradle:
buildTypes.each {
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey
}
то лог-шоу:
Could not find property 'MyOpenWeatherMapApiKey' on [email protected]
Решения в google, которые я искал, не могут решить мою проблему. Пожалуйста, покажите мне, где я был неправ?
Ответы
Ответ 1
Поскольку вы используете 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
.
Ответ 2
Вы должны определить MyOpenWeatherMapApiKey
в ваших локальных пользовательских настройках, поэтому перейдите в настройки вашего дома gradle: ~/.gradle/gradle.properties
(Win: %USERPROFILE%\.gradle\gradle.properties
). Если gradle.properties
не существует - просто создайте его.
В файле добавьте следующую строку:
MyOpenWeatherMapApiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
(к сожалению, преподаватели Android Udacity не очень хорошо объяснили, как это работает с точки зрения gradle, так же, как я не легко нашел документацию из gradle, как работает it.buildConfigField)
Ответ 3
"OPEN_WEATHER_MAP_API_KEY" ссылается на свойство gradle с именем "MyOpenWeatherMapApiKey", которое необходимо настроить.
Одна из причин заключается в том, что система сборки должна генерировать код для этого. Другой может быть так, что вы случайно не передадите свой API-ключ в GitHub или другое публичное репо.
Что вам нужно сделать, это добавить запись в свой файл gradle.properties 'следующим образом:
MyOpenWeatherMapApiKey = "[ВАШ-API-KEY]"
Затем синхронизируйте свой проект с помощью gradle (если вы используете Android Studio)
Ответ 4
См. "Требуется ключ API Open Weather Map". внизу https://github.com/udacity/Sunshine-Version-2
Ответ 5
- Зарегистрируйтесь в http://openweathermap.org/appid#use или других провайдерах погоды, чтобы получить уникальный API-ключ.
- Перейдите в свой домашний gradle настройки: ~/.gradle/gradle.properties
Добавьте эту строку:
MyOpenWeatherMapApiKey="yourUniqueApiKey"
- Восстановить его
Ответ 6
Мне пришлось использовать небольшую информацию из нескольких ответов здесь, чтобы исправить эту проблему.
-
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey
отлично. Главный голосовой ответ помещает ключ непосредственно в это поле, а не ссылается на "глобальный" ключ для вашего пользователя.
- Вам нужно получить ключ API открытой карты погоды, сделав учетную запись здесь
- Gradle ожидает, что вы добавите ключ, который вы получаете от создания учетной записи Open Weather Map, в поле с именем
MyOpenWeatherMapApiKey
, на которое ссылается OPEN_WEATHER_MAP_API_KEY
. Для этого откройте gradle.properties в Android Studio и добавьте MyOpenWeatherMapApiKey="<Your Key Here>"
Теперь вы сможете создавать приложение без проблем.
Ответ 7
Принятый ответ абсолютно правильный. Другой способ, возможно, проще, чтобы форматировать значение внутри, поскольку String выглядит так:
it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', '"xxxxxxxxxxxxxxxxxx"'