Плагин Secrets Gradle

Google настоятельно рекомендует не добавлять ключ API в системы контроля версий. Вместо этого сохраните ключ в локальном файле secrets.properties, который находится в корневом каталоге проекта (не проверяется системами контроля версий), и используйте для его чтения плагин Secrets Gradle для Android.

Плагин Secrets Gradle для Android считывает ключ API и другие секретные данные из файла свойств, который не хранится в системе контроля версий. Затем плагин указывает эти свойства в качестве переменных в созданном Gradle классе BuildConfig и файле манифеста для Android.

Полный пример использования плагина Secrets Gradle для доступа к ключу описан в статье Настройка проекта Android Studio.

Установка и использование

Чтобы установить плагин Secrets Gradle для Android в проект Google Карт:

  1. В Android Studio откройте файл build.gradle или build.gradle.kts верхнего уровня и добавьте в элемент dependencies, принадлежащий элементу buildscript, приведенный ниже код.

    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")
        }
    }
    
  2. Откройте файл build.gradle уровня модуля и добавьте в элемент plugins приведенный ниже код.

    Groovy

    plugins {
        // ...
        id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
    }

    Kotlin

    plugins {
        id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
    }
  3. В файле build.gradle уровня модуля убедитесь, что для targetSdk и compileSdk задано значение 34.
  4. Сохраните файл и синхронизируйте проект с Gradle.
  5. Откройте файл secrets.properties в каталоге верхнего уровня и добавьте приведенный ниже код. Укажите вместо YOUR_API_KEY свой ключ API. Храните свой ключ в этом файле, поскольку secrets.properties не проверяется системой управления версиями.
    MAPS_API_KEY=YOUR_API_KEY
  6. Сохраните файл.
  7. Создайте файл local.defaults.properties в директории верхнего уровня (в той же папке, где хранится файл secrets.properties), а затем добавьте указанный ниже код.

    MAPS_API_KEY=DEFAULT_API_KEY

    Этот файл служит запасным хранилищем ключа API, чтобы обеспечить выполнение сборки, даже если система не обнаружит файл secrets.properties. Так может произойти, если вы скопируете приложение из системы управления версиями (она проигнорирует файл secrets.properties) и не создадите файл secrets.properties с ключом API локально.

  8. Сохраните файл.
  9. В файле AndroidManifest.xml найдите раздел com.google.android.geo.API_KEY и обновите android:value attribute. Если тег <meta-data> не существует, создайте его как дочерний элемент для тега <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 name com.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.

  10. In Android Studio, open your module-level build.gradle or build.gradle.kts file and edit the secrets property. If the secrets property does not exist, add it.

    Edit the properties of the plugin to set propertiesFileName to secrets.properties, set defaultPropertiesFileName to local.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.*"
    }
            

Что дальше