Google zdecydowanie zaleca, aby nie przekazywać klucza interfejsu API do systemu kontroli wersji. Zamiast tego przechowuj go w lokalnym pliku secrets.properties, który znajduje się w katalogu głównym projektu, ale jest wykluczony z kontroli wersji. Następnie odczytaj klucz interfejsu API za pomocą wtyczki Gradle obiektów tajnych dla Androida.
Wtyczka Gradle obiektów tajnych na Androida odczytuje obiekty tajne, w tym klucz interfejsu API, z pliku właściwości, który nie został zweryfikowany w systemie kontroli wersji. Wtyczka udostępnia te właściwości jako zmienne w generowanej przez Gradle klasie BuildConfig i w pliku manifestu Androida.
Pełny przykład korzystania z wtyczki Gradle obiektów tajnych dla Androida w celu uzyskania dostępu do klucza interfejsu API znajdziesz w artykule Konfigurowanie projektu w Android Studio.
Instalacja i korzystanie
Aby zainstalować wtyczkę Gradle obiektów tajnych na Androida w projekcie Mapy Google:
-
W Android Studio otwórz najwyższy poziom pliku
build.gradle.ktslubbuild.gradlei dodaj pod elementembuildscriptkod:dependenciesKotlin
plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.jetbrains.kotlin.android) apply false alias(libs.plugins.kotlin.compose) apply false alias(libs.plugins.secrets.gradle.plugin) apply false }
Zakręcony
buildscript { dependencies { classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1" } }
-
Otwórz plik
build.gradle.ktslubbuild.gradlena poziomie modułu i dodaj do elementupluginsten kod:Kotlin
plugins { // ... alias(libs.plugins.secrets.gradle.plugin) }
Zakręcony
plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
- W pliku
build.gradle.ktslubbuild.gradlena poziomie modułu sprawdź, czy wartościtargetSdkicompileSdksą ustawione na 34. - Zsynchronizuj projekt z Gradle.
-
Otwórz plik
secrets.propertiesw katalogu najwyższego poziomu, a potem dodaj ten kod. ZastąpYOUR_API_KEYswoim kluczem API. Przechowuj klucz w tym pliku, ponieważsecrets.propertiesnie jest uwzględniany w systemie kontroli wersji.MAPS_API_KEY=YOUR_API_KEY
-
Utwórz plik
local.defaults.propertiesw katalogu najwyższego poziomu, czyli w tym samym folderze co pliksecrets.properties, a potem dodaj podany niżej kod.MAPS_API_KEY=DEFAULT_API_KEY
Ten plik stanowi kopię zapasową klucza interfejsu API na wypadek, gdyby nie udało się znaleźć pliku
secrets.properties, dzięki czemu kompilacje nie będą się załamywać. Może się tak zdarzyć, jeśli klonujesz aplikację z systemu kontroli wersji, który pomija pliksecrets.properties, a na komputerze lokalnym nie masz jeszcze utworzonego plikusecrets.properties, aby podać klucz interfejsu API. -
W pliku
AndroidManifest.xmlotwórzcom.google.android.geo.API_KEYi zaktualizujandroid:value attribute. Jeśli tag<meta-data>nie istnieje, utwórz go jako element podrzędny tagu<application>.<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />
Uwaga:
com.google.android.geo.API_KEYto zalecane nazwa metadanych klucza interfejsu API. Klucza o tej nazwie można używać do uwierzytelniania w wielu interfejsach API opartych na Mapach Google na platformie Androida, w tym w pakiecie SDK Map na Androida. Ze względu na zgodność wsteczną interfejs API obsługuje też nazwęcom.google.android.maps.v2.API_KEY. Ten starszy identyfikator umożliwia uwierzytelnianie tylko w ramach interfejsu Mapy Google na Androida w wersji 2. Aplikacja może podać tylko jedną z nazwy metadanych klucza interfejsu API. Jeśli podasz obie wartości, interfejs API zwróci wyjątek. -
W Android Studio otwórz plik
build.gradle.ktslubbuild.gradlena poziomie modułu i edytuj właściwośćsecrets. Jeśli właściwośćsecretsnie istnieje, dodaj ją.Zmień właściwości wtyczki, aby ustawić wartość
propertiesFileNamenasecrets.properties, wartośćdefaultPropertiesFileNamenalocal.defaults.propertiesi ustawić inne właściwości.Kotlin
secrets { // To add your Maps API key to this project: // 1. If the secrets.properties file does not exist, create it in the same folder as the 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" }
Zakręcony
secrets { // To add your Maps API key to this project: // 1. If the secrets.properties file does not exist, create it in the same folder as the 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" }
Co dalej?
- Wyświetl Wtyczkę Gradle obiektów tajnych na Androida na stronie projektu na GitHubie.
- Pełny przykład użycia tej wtyczki znajdziesz w artykule Konfigurowanie projektu w Android Studio.