Не удалось найти свойство "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)

Ответ 5

  • Зарегистрируйтесь в http://openweathermap.org/appid#use или других провайдерах погоды, чтобы получить уникальный API-ключ.
  • Перейдите в свой домашний gradle настройки: ~/.gradle/gradle.properties

Добавьте эту строку:

MyOpenWeatherMapApiKey="yourUniqueApiKey"
  1. Восстановить его

Ответ 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"'