Wtyczka Gradle obiektów tajnych

Google zdecydowanie zaleca, aby nie dodawać klucza interfejsu API do systemu kontroli wersji. Zamiast tego zapisz go w lokalnym secrets.properties pliku, który znajduje się w katalogu głównym Twojego projektu, ale jest wykluczony z kontroli wersji. Następnie użyj wtyczki Gradle obiektów tajnych dla Androida aby odczytać klucz interfejsu API.

Wtyczka Gradle obiektów tajnych dla Androida odczytuje obiekty tajne, w tym klucz interfejsu API, z pliku właściwości, który nie jest sprawdzany w systemie kontroli wersji. Następnie wtyczka udostępnia te właściwości jako zmienne w wygenerowanej przez Gradle klasie BuildConfig i w pliku manifestu Androida.

Pełny przykład użycia 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 używanie

Aby zainstalować wtyczkę Gradle obiektów tajnych dla Androida i zapisać klucz interfejsu API:

  1. W Android Studio otwórz plik build.gradle.kts lub build.gradle najwyższego poziomu i dodaj ten kod do bloku plugins.

    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
    }
  2. Otwórz plik build.gradle.kts lub build.gradle na poziomie modułu i dodaj ten kod do elementu plugins.

    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'
    }
  3. Jeśli używasz Android Studio, zsynchronizuj swój projekt z Gradle.
  4. Otwórz plik secrets.properties w katalogu najwyższego poziomu, a następnie dodaj ten kod. Zastąp YOUR_API_KEY swoim kluczem interfejsu API. Dodaj secrets.properties do swojego .gitignore pliku (lub wyklucz go z systemu kontroli wersji), aby nie dodawać klucza interfejsu API do kontroli wersji.
    MAPS_API_KEY=YOUR_API_KEY
  5. Utwórz plik local.defaults.properties w katalogu najwyższego poziomu, w tym samym folderze co plik secrets.properties, a następnie dodaj ten kod.

    MAPS_API_KEY=DEFAULT_API_KEY

    Ten plik ma na celu zapewnienie lokalizacji kopii zapasowej klucza interfejsu API jeśli plik secrets.properties nie zostanie znaleziony, aby kompilacje się nie powiodły. Może się tak zdarzyć, jeśli sklonujesz aplikację z systemu kontroli wersji , który pomija secrets.properties i nie utworzysz jeszcze lokalnie pliku secrets.properties, aby podać klucz interfejsu API.

  6. W pliku AndroidManifest.xml przejdź do com.google.android.geo.API_KEY i zaktualizuj atrybut android:value w ten sposób:
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${MAPS_API_KEY}" />
        

    Uwaga: com.google.android.geo.API_KEY to zalecana nazwa metadanych klucza interfejsu API. Klucz o tej nazwie może służyć do uwierzytelniania w wielu interfejsach API opartych na Mapach Google na platformie Android, w tym w pakiecie Maps SDK na Androida. Aby zachować zgodność wsteczną, interfejs API obsługuje też nazwę com.google.android.maps.v2.API_KEY. Ta starsza nazwa umożliwia uwierzytelnianie tylko w interfejsie Android Maps API w wersji 2. Aplikacja może określić tylko jedną z nazw metadanych klucza interfejsu API. Jeśli zostaną określone obie, interfejs API zgłosi wyjątek.

  7. W Android Studio otwórz plik build.gradle.kts lub build.gradle na poziomie modułu i edytuj właściwość secrets. Jeśli właściwość secrets nie istnieje, dodaj ją.

    Edytuj właściwości wtyczki, aby ustawić propertiesFileName na "secrets.properties", ustaw defaultPropertiesFileName na "local.defaults.properties", i 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 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"
    }

Co dalej?