Плагин 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 на верхнем уровне и добавьте в раздел buildscript элемента dependencies следующий код:

    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.
    MAPS_API_KEY=YOUR_API_KEY
  6. Сохраните файл.
  7. В файле 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}" />
  8. 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 the name of your local properties file (either local.properties or local.defaults.properties depending on how you created the project), 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.*"
    }
            

Что дальше