O Google recomenda que você não verifique chaves de API no seu sistema de controle de versões. Em vez disso, faça o armazenamento no arquivo secrets.properties
local, que fica no diretório raiz do projeto, mas excluindo o controle de versões, e use o plug-in Secrets Gradle para Android (link em inglês) se quiser ler a chave de API.
O plug-in Secrets Gradle para Android lê chaves secretas, incluindo a chave de API de um arquivo de propriedades não verificado em um sistema de controle de versões. Em seguida, o plug-in expõe essas propriedades como variáveis na classe BuildConfig
gerada pelo Gradle e no arquivo de manifesto do Android.
Para ver um exemplo completo do uso do plug-in Secrets Gradle para Android ao acessar uma chave de API, consulte o artigo Configurar um projeto do Android Studio.
Instalação e uso
Para instalar esse plug-in no seu projeto do Google Maps:
-
No Android Studio, abra o arquivo de nível superior
build.gradle
oubuild.gradle.kts
e adicione o seguinte código ao elementodependencies
embuildscript
.Groovy
buildscript { dependencies { classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1" } }
Kotlin
buildscript { dependencies { classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1") } }
-
Depois, abra o arquivo
build.gradle
no nível do módulo e adicione o seguinte código ao elementoplugins
.Groovy
plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
Kotlin
plugins { id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
- No arquivo
build.gradle
no nível do módulo, definatargetSdk
ecompileSdk
como 34. - Salve o arquivo e sincronize seu projeto com o Gradle.
-
Abra o arquivo
secrets.properties
no seu diretório de nível superior e adicione o código a seguir. SubstituaYOUR_API_KEY
pela sua chave de API. Armazene sua chave nesse arquivo porquesecrets.properties
não é verificado em um sistema de controle de versão.MAPS_API_KEY=YOUR_API_KEY
- Salve o arquivo.
-
Crie o arquivo
local.defaults.properties
no seu diretório de nível superior, na mesma pasta que o arquivosecrets.properties
, e depois adicione o seguinte código.MAPS_API_KEY=DEFAULT_API_KEY
O objetivo desse arquivo é oferecer um local de backup para a chave da API se o arquivo
secrets.properties
não for encontrado, para que os builds não apresentem falha. Isso pode acontecer se você clonar o app de um sistema de controle de versão que omitesecrets.properties
e ainda não tiver criado um arquivosecrets.properties
localmente para fornecer sua chave de API. - Salve o arquivo.
-
No seu arquivo
AndroidManifest.xml
, vá atécom.google.android.geo.API_KEY
e atualizeandroid:value attribute
. Se a tag<meta-data>
não existe, crie-a como um elemento filho da tag<application>
.<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />
Note:
com.google.android.geo.API_KEY
is 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
orbuild.gradle.kts
file and edit thesecrets
property. If thesecrets
property does not exist, add it.Edit the properties of the plugin to set
propertiesFileName
tosecrets.properties
, setdefaultPropertiesFileName
tolocal.defaults.properties
, and set any other properties.Groovy
secrets { // Optionally specify a different file name containing your secrets. // The plugin defaults to "local.properties" propertiesFileName = "secrets.properties" // A properties file containing default secret values. This file can be // checked in version control. defaultPropertiesFileName = "local.defaults.properties" // Configure which keys should be ignored by the plugin by providing regular expressions. // "sdk.dir" is ignored by default. ignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore" ignoreList.add("sdk.*") // Ignore all keys matching the regexp "sdk.*" }
Kotlin
secrets { // Optionally specify a different file name containing your secrets. // The plugin defaults to "local.properties" propertiesFileName = "secrets.properties" // A properties file containing default secret values. This file can be // checked in version control. defaultPropertiesFileName = "local.defaults.properties" // Configure which keys should be ignored by the plugin by providing regular expressions. // "sdk.dir" is ignored by default. ignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore" ignoreList.add("sdk.*") // Ignore all keys matching the regexp "sdk.*" }
A seguir
- Veja a página do plug-in Secrets Gradle para Android do projeto no GitHub (link em inglês).
- Consulte o artigo Configurar um projeto do Android Studio para ver um exemplo completo de como usar o plug-in.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2024-08-13 UTC.
[null,null,["Última atualização 2024-08-13 UTC."],[[["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.properties` file and makes it accessible in your `BuildConfig` and 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.properties` file to provide a fallback API key for builds and prevent failures when the `secrets.properties` file is missing."],["Refer to the plugin's GitHub page and the setup guide for detailed information and a comprehensive example."]]],[]]