Page Summary
-
Securely manage your Google Maps API key using the Secrets Gradle Plugin for Android, avoiding storage in version control.
-
The plugin reads your API key from a local
secrets.propertiesfile and makes it accessible in yourBuildConfigand manifest. -
Install the plugin by adding it as a dependency and applying it in your Gradle files, then configure it to locate your API key.
-
Utilize the
local.defaults.propertiesfile to provide a fallback API key for builds and prevent failures when thesecrets.propertiesfile is missing. -
Refer to the plugin's GitHub page and the setup guide for detailed information and a comprehensive example.
Google strongly recommends that you don't check an API key into
your version control system. Instead, store it in a local
secrets.properties file, which is located in the root directory of your
project but excluded from version control, and then use the
Secrets Gradle Plugin for Android
to read the API key.
The Secrets Gradle Plugin for Android reads secrets, including the API key, from
a properties file not checked into a version control system. The plugin then
exposes those properties as variables in the Gradle-generated BuildConfig
class and in the Android manifest file.
For a complete example of using the Secrets Gradle Plugin for Android to access an API key, see Set up an Android Studio project.
Installation and usage
To install the Secrets Gradle Plugin for Android and store your API key:
-
In Android Studio, open your top-level
build.gradle.ktsorbuild.gradlefile and add the following code to thepluginsblock.Kotlin
plugins { // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1" apply false }
Groovy
plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false }
-
Open your module-level
build.gradle.ktsorbuild.gradlefile and add the following code to thepluginselement.Kotlin
plugins { id("com.android.application") // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
Groovy
plugins { id 'com.android.application' // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
- If you use Android Studio, sync your project with Gradle.
-
Open the
secrets.propertiesfile in your top-level directory, and then add the following code. ReplaceYOUR_API_KEYwith your API key. Make sure to addsecrets.propertiesto your.gitignorefile (or otherwise exclude it from your version control system) so that you don't check your API key into version control.MAPS_API_KEY=YOUR_API_KEY
-
Create the
local.defaults.propertiesfile in your top-level directory, the same folder as thesecrets.propertiesfile, and then add the following code.MAPS_API_KEY=DEFAULT_API_KEY
The purpose of this file is to provide a backup location for the API key if the
secrets.propertiesfile isn't found so that builds don't fail. This can happen if you clone the app from a version control system that omitssecrets.propertiesand you haven't yet created asecrets.propertiesfile locally to provide your API key. -
In your
AndroidManifest.xmlfile, go tocom.google.android.geo.API_KEYand update theandroid:valueattribute as follows:<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />Note:
com.google.android.geo.API_KEYis the recommended metadata name for the API key. A key with this name can be used to authenticate to multiple Google Maps-based APIs on the Android platform, including the Maps SDK for Android. For backwards compatibility, the API also supports the namecom.google.android.maps.v2.API_KEY. This legacy name allows authentication to the Android Maps API v2 only. An application can specify only one of the API key metadata names. If both are specified, the API throws an exception. -
In Android Studio, open your module-level
build.gradle.ktsorbuild.gradlefile and edit thesecretsproperty. If thesecretsproperty doesn't exist, add it.Edit the properties of the plugin to set
propertiesFileNameto"secrets.properties", setdefaultPropertiesFileNameto"local.defaults.properties", and set any other properties.Kotlin
secrets { // To add your Maps API key to this project: // 1. If the secrets.properties file does not exist, create it in the root directory (the same folder as the root local.properties file). // 2. Add this line, where YOUR_API_KEY is your API key: // MAPS_API_KEY=YOUR_API_KEY propertiesFileName = "secrets.properties" // A properties file containing default secret values. This file can be // checked in version control. defaultPropertiesFileName = "local.defaults.properties" }
Groovy
secrets { // To add your Maps API key to this project: // 1. If the secrets.properties file does not exist, create it in the root directory (the same folder as the root local.properties file). // 2. Add this line, where YOUR_API_KEY is your API key: // MAPS_API_KEY=YOUR_API_KEY propertiesFileName = "secrets.properties" // A properties file containing default secret values. This file can be // checked in version control. defaultPropertiesFileName = "local.defaults.properties" }
What's next
- See the Secrets Gradle Plugin for Android GitHub project page.
- See Set up an Android Studio project for a complete example of using the plugin.