Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Could not find property 'xxxx' on com.android.build.gradle.AppExtension_Decorated

I got this error after I added these lines to my gradle file:

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

then the log show:

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

The solutions on google that I searched cannot solve my problem. Please show me where I was wrong?

like image 711
DinhNgocHien Avatar asked Oct 20 '15 02:10

DinhNgocHien


People also ask

Where is Gradle properties in Android?

properties in the project folder or in the C:\Users\Username. gradle.


5 Answers

Since you are using a String you have to use this syntax:

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

The last parameter has to be a String

Otherwise you can use something like this:

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

The first case generates a constants iin your BuildConfig file.
The second case generates a string resource value that can be accessed using the @string/OPEN_WEATHER_MAP_API_KEY annotation.

like image 162
Gabriele Mariotti Avatar answered Oct 28 '22 00:10

Gabriele Mariotti


You should define MyOpenWeatherMapApiKey in your local user settings, so, go to your home gradle settings: ~/.gradle/gradle.properties (Win: %USERPROFILE%\.gradle\gradle.properties). If gradle.properties does not exist - just create it.

In the file add following line:

MyOpenWeatherMapApiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXX"

(unfortunately, Android Udacity teachers were not very nice to explain how does it work from gradle perspective; as same as I've not easily found any documentation from gradle how it.buildConfigField works)

like image 36
radistao Avatar answered Oct 27 '22 23:10

radistao


The 'OPEN_WEATHER_MAP_API_KEY' references a gradle property named 'MyOpenWeatherMapApiKey' that needs to be configured.

One reason is for the build system to generate the code for this. Another might be so that you don't accidentally commit your API-KEY to GitHub or other public repo.

What you should do is add an entry to your 'gradle.properties' file like this:

MyOpenWeatherMapApiKey="[YOUR-API-KEY]"

Then sync your project with gradle (if using Android Studio)

like image 21
Lee Hounshell Avatar answered Oct 27 '22 23:10

Lee Hounshell


See " Open Weather Map API Key is required." at the bottom of https://github.com/udacity/Sunshine-Version-2

like image 29
Senti Avatar answered Oct 27 '22 23:10

Senti


  1. Sign up account at http://openweathermap.org/appid#use or other weather api providers to get your unique API Key
  2. Go to your home gradle settings: ~/.gradle/gradle.properties

Add this line:

MyOpenWeatherMapApiKey="yourUniqueApiKey"
  1. Rebuild it
like image 28
Zed Avatar answered Oct 28 '22 00:10

Zed