빈 구멍 채우기

[Android] Secrets Gradle Plugin for Android

⭐⭐기록 2024. 11. 28. 23:03

Google Map SDK를 추가하다가 알게된 플러그인이다.

 

https://github.com/google/secrets-gradle-plugin

 

GitHub - google/secrets-gradle-plugin: A Gradle plugin for providing your secrets to your Android project.

A Gradle plugin for providing your secrets to your Android project. - google/secrets-gradle-plugin

github.com

 

 

API 키를 숨겨준다고 하는데, 역시나 앱 내에 API 키를 하드코딩하지 않게 해준다는 의미였다. 버전 컨트롤 시의 API 숨김이라서 APK를 디컴파일하면 API 키가 복원된다고 Repository의 README에 분명히 설명되어 있다. 

 

사용하기 위한 세팅

1. 일단 BuildConfig를 사용할 수 있게 enable 시켜야 한다. 

app의 build.gradle.kts 파일에서 BuildConfig를 사용할 수 있게 설정한다.

android {
    ....
    buildFeatures {
        ...
        buildConfig = true
    }
}

 

참고

https://daryeou.tistory.com/324

 

[Gradle] AGP 8.0에서 BuildConfig 사용 시 에러

멀티모듈에서 BuildConfig를 buildType별로 다르게 하기 위해 해당 모듈 build.gradle 파일을 아래와 같이 작성했었다. android { namespace 'com.app.xxxx' compileSdk 33 defaultConfig { minSdk 21 targetSdk 33 testInstrumentationRunn

daryeou.tistory.com

 

2. 플러그인을 추가한다.

나는 libs.version.toml에 dependencies 정보들을 관리하고 있다.  libs.version.toml에 해당 dependecy 정보들을 기입한다.

[versions]
...
secrets-gradle-plugin = "2.0.1"

[libraries]
...
secrets-gradle-plugin = { group="com.google.android.libraries.mapsplatform.secrets-gradle-plugin", name = "secrets-gradle-plugin", version.ref = "secrets-gradle-plugin" }

[plugins]
...
secrets-gradle-plugin = { id = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin" }

 

2-1. 프로젝트 root의 build.gradle.kts 파일에 다음을 추가한다.

plugins {
    ...
}

buildscript {
    dependencies {
        classpath(libs.secrets.gradle.plugin)
    }
}

 

2-2. app의 build.gradle.kts 파일에 다음을 추가한다.

plugins {
    ...
    alias(libs.plugins.secrets.gradle.plugin)
}

 

3. local.properties 파일에 API 키를 선언한다.

MAP_API_KEY={API키값}

 

4. 빌드 후 사용한다.

4-1. BuildConfig로 사용

BuildConfig.MAP_API_KEY

 

4-2. AndroidManifest에서 사용

<meta-data android:value="${MAP_API_KEY}" />

 

 

* local.properties 파일 외에 다른 파일에 API 키를 기입하고 사용할 수 있다.

참고

https://github.com/google/secrets-gradle-plugin

 

GitHub - google/secrets-gradle-plugin: A Gradle plugin for providing your secrets to your Android project.

A Gradle plugin for providing your secrets to your Android project. - google/secrets-gradle-plugin

github.com

 

https://medium.com/androidbytesensei/safe-your-api-keys-via-secrets-gradle-plugin-1dd9802ef2a6

 

Safe your API Keys via Secrets Gradle plugin

Where should I start about hiding the API keys? It has been coming for a long time that we Android developers try to hide the key by…

medium.com

 


 

기존에 local.properties 파일에 API 키를 기입하고, local.properties는 gitignore 파일에 기입한 후에, build.gradle 파일에서 BuildConfig에 local.properties 파일의 API 키 값을 가져다가 선언해서 쓰는 방법을 알고 있었다.

이 Secret Gradle Plugin는 BuildConfig에 API 키 값을 자동으로 선언해주는 기능으로 보인다. 이미 알고 있던 방법과 이 플러그인을 사용하는 방법 모두 BuildConfig를 이용하는 것을 보면, 결국 원리는 같은 것으로 보인다.