web-dev-qa-db-fra.com

Impossible de trouver la propriété 'xxxx' sur com.Android.build.gradle.AppExtension_Decorated

J'ai obtenu cette erreur après avoir ajouté ces lignes à mon fichier Gradle:

buildTypes.each {
        it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey
    }

puis le journal affiche:

Could not find property 'MyOpenWeatherMapApiKey' on com.Android.build.gradle.AppExtension_Decorated@c3b784

Les solutions sur Google que j'ai recherchées ne peuvent pas résoudre mon problème. Veuillez me montrer où je me suis trompé?

16
DinhNgocHien

Puisque vous utilisez un String, vous devez utiliser cette syntaxe:

buildConfigField "String" , "OPEN_WEATHER_MAP_API_KEY" ,  "\"XXXXX-XXXXX-XXX\""

Le dernier paramètre doit être une chaîne

Sinon, vous pouvez utiliser quelque chose comme ceci:

resValue "string", "OPEN_WEATHER_MAP_API_KEY", "\"XXXXX-XXXXX-XXX\""

Le premier cas génère une constante dans votre fichier BuildConfig.
Le deuxième cas génère une valeur de ressource de chaîne accessible à l'aide de @string/OPEN_WEATHER_MAP_API_KEY annotation.

26
Gabriele Mariotti

Vous devez définir MyOpenWeatherMapApiKey dans vos paramètres tilisateur local, alors, allez dans les paramètres de votre note d'accueil: ~/.gradle/gradle.properties (Win: %USERPROFILE%\.gradle\gradle.properties). Si gradle.properties n'existe pas - il suffit de le créer.

Dans le fichier, ajoutez la ligne suivante:

MyOpenWeatherMapApiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"

(malheureusement, Android Les professeurs d'Udacity n'étaient pas très gentils pour expliquer comment cela fonctionne du point de vue de Gradle; de ​​même que je n'ai pas facilement trouvé de documentation de Gradle comment it.buildConfigField fonctionne)

12
radistao

'OPEN_WEATHER_MAP_API_KEY' fait référence à une propriété de gradle nommée 'MyOpenWeatherMapApiKey' qui doit être configurée.

L'une des raisons est que le système de génération génère le code pour cela. Un autre pourrait être de ne pas commettre accidentellement votre clé API à GitHub ou à un autre dépôt public.

Ce que vous devez faire est d'ajouter une entrée à votre fichier 'gradle.properties' comme ceci:

MyOpenWeatherMapApiKey = "[YOUR-API-KEY]"

Synchronisez ensuite votre projet avec gradle (si vous utilisez Android Studio)

11
Lee Hounshell

Voir "La clé API Open Weather Map est requise." au bas de https://github.com/udacity/Sunshine-Version-2

5
Senti
  1. Inscrivez-vous à http://openweathermap.org/appid#use ou à d'autres fournisseurs d'api météo pour obtenir votre clé API unique
  2. Accédez aux paramètres de votre résidence: ~/.gradle/gradle.properties

Ajoutez cette ligne:

MyOpenWeatherMapApiKey="yourUniqueApiKey"
  1. Reconstruisez-le
4
Zed

J'ai dû utiliser un peu d'informations provenant de plusieurs réponses ici pour résoudre ce problème.

  1. it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey c'est bien. La réponse la plus votée place la clé directement dans ce champ plutôt que de référencer une clé "globale" pour votre utilisateur.
  2. Vous devez acquérir une clé API Open Weather Map en créant un compte ici
  3. Gradle attend de vous que vous mettiez la clé que vous obtenez en créant un compte Open Weather Map dans un champ nommé MyOpenWeatherMapApiKey référencé par OPEN_WEATHER_MAP_API_KEY D'avant. Pour ce faire, ouvrez gradle.properties dans Android Studio et ajoutez MyOpenWeatherMapApiKey="<Your Key Here>"

Vous devriez maintenant pouvoir créer l'application sans aucun problème.

2
Andrew

La réponse acceptée est absolument correcte. Une autre façon, probablement plus simple, de formater la valeur à l'intérieur car la chaîne est comme ceci:

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