android – Saving the API Key in

Exception or error:

I am new to android and working on a project where I see that the API key that I got is saved in as :


And then in build.gradle(module:app) I am adding the following lines :

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

So, in my main program I am accessing the data using this api whose URL is got by this piece of code :

final String FORECAST_BASE_URL = "";
            final String QUERY_PARAM = "q";
            final String FORMAT_PARAM = "mode";
            final String UNITS_PARAM = "units";
            final String DAYS_PARAM = "cnt";
            final String APPID_PARAM = "APPID";
            Uri builtUri = Uri.parse(FORECAST_BASE_URL).buildUpon()
                    .appendQueryParameter(QUERY_PARAM, params[0])
                    .appendQueryParameter(FORMAT_PARAM, format)
                    .appendQueryParameter(UNITS_PARAM, units)
                    .appendQueryParameter(DAYS_PARAM, Integer.toString(numDays))
                    .appendQueryParameter(APPID_PARAM, BuildConfig.OPEN_WEATHER_MAP_API_KEY)
            URL url = new URL(builtUri.toString());

So, my question is that why taking all the tension of doing changes to store the appid in the gradle part. Can’t we access directly in the main program only ?

And the second part of my question is what is actually happening in the gradle part especially with the buildTypes.each{} block ?

How to solve:
  1. The idea of this indirection is to allow you to store API key in files that are not uploaded to the version control: is a local file and should not be stored under the version control, and BuildConfig is a generated class, so it will only be created at build time. It’s definitely easier to store the API key somewhere as a plain String, but then you’ll have to commit it to the repo.
  2. During build time, Gradle will generate the BuildConfig file to store some build-related constants. You can use buildConfigField command to instruct Gradle to add custom fields into BuildConfig. After the project is built, you can reference these constants inside your source code.


Refer – Complete implementation for storing API_KEY in gradle properties to avoid uploading to Github.

  1. Add / into gitignore file.
  2. Add line in file API_KEY = "CopyYourAPI_KEYhere"
  3. Add below line in app:build.gradle within the defaultConfig

    buildConfigField("String", "API_KEY", API_KEY)

  4. Use Key using the following statement

    String API_KEY = BuildConfig.API_KEY;

Copy this wherever you need API_KEY

It will save your efforts to add and remove API_KEY while committing code in Github.

Leave a Reply

Your email address will not be published. Required fields are marked *