이번에는 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는 프로젝트 빌듯이 생성되기 때문에, 그래들에 선언 후 프로젝트를 빌드하면 똑같이 사용할 수 있을 것이다.
'Develop > Kotlin' 카테고리의 다른 글
[kotlin] 코틀린 Android RecyclerView Item 오류(Position 오류) (0) | 2022.05.01 |
---|---|
[kotlin] 코틀린 Android Retrofit 활용(기상청단기예보 오픈 API 사용) (18) | 2022.04.19 |
[kotlin] 코틀린 Android 코루틴(Coroutine) 활용 (0) | 2021.11.19 |
[kotlin] 코틀린 Android MVVM 패턴 구현 (3) | 2021.08.30 |
[Android] 안드로이드 앱 배포 시 필요한 이미지 (0) | 2021.08.27 |