Develop/Kotlin

[kotlin] 코틀린 Android local.properties에 API Key 숨기고 활용하는 방법

JunJangE 2022. 4. 19. 19:02

이번에는 local.properties에 API Key를 숨기고 활용하는 방법에 대해서 알아보자.

개발하다 보면 많은 API Key를 사용하게 되는데, 이런 많은 Key를 가지고 Git이나 오픈되어 있는 공간에서 작업을 하다 보면 Key가 노출되어 악용될 위험이 있다.

이럴 때를 대비해서 Key를 숨기고 활용하는 방법에 대해서 알면 참 좋을 것 같다!

local.properties 

우선 local.properties 자신이 숨기고픈 Key를 입력한다.

# api url
url.weather="xxxxxx"

# api key
api.key="xxxxxx"

# kakao map rest api key
kakao.map.rest.api.key = "xxxxxx"

입력을 했다면 build.gradle(Module:)에 들어가서 다음 코드를 입력해준다.

build.gradle(Module:)

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
}
apply plugin : 'kotlin-kapt'

// local.properties 사용을 위함
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

android {
    compileSdk 31

    defaultConfig {
        applicationId "com.junjange.pmdkey"
        minSdk 28
        targetSdk 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        // url 변수 지정
        buildConfigField "String", "URL_WEATHER", properties['url.weather']

        // api key 변수 지정
        buildConfigField "String", "API_KEY", properties['api.key']

        // kakao map rest api key 변수 지정
        buildConfigField "String", "KAKAO_MAP_REST_API_KEY", properties['kakao.map.rest.api.key']

    }

작성을 다하고 Sync를 한다면 우리가 숨긴 Key를 사용할 수 있다.

사용하는 방법으로는 다음 코드와 같이 사용하면 된다.

코드 사용 방법

BuildConfig.API_KEY
BuildConfig.KAKAO_MAP_REST_API_KEY
BuildConfig.URL_WEATHER

buildConfigField에서 저장한 API 키와 이어주고, 그래들을 빌드해주면 BuildConfig 에 저장되어 프로젝트 내에서 언제든 사용할 수 있게 된다.

AndroidMainfest.xml에서 사용하는 방법

그런데 AndroidMainfest.xml에서도 사용하고 싶다면 다음과 같은 방법으로 사용하면 된다.

# Kakao map native key
KAKAO_MAP_NATIVE_KEY = xxxxxxxx

위 방법과 같이 local.properties 자신이 숨기고픈 Key를 입력한다.

다음으로 AndroidMainfest.xml에 숨긴 Key를 입력하면 된다.

  <!-- 네이티브 앱 키 추가 -->
        <meta-data android:name="com.kakao.sdk.AppKey" android:value= "${KAKAO_MAP_NATIVE_KEY}" />

협업

협업할 때는 local.properties 에 있는 내용만 잘 전달해주면 된다. 또한, BuildConfig는 프로젝트 빌듯이 생성되기 때문에, 그래들에 선언 후 프로젝트를 빌드하면 똑같이 사용할 수 있을 것이다.