안드로이드 스튜디오 프로젝트 생성시 기본으로 같이 생성되는 local.properties 파일을 통해
API 키를 따로 보관할 수 있다. 코드 베이스 상에 키를 그대로 노출 시키는 것은 아무래도 보안상 위험하기 때문에 통상 그렇듯 이렇게 따로 파일을 만들어 관리한다.
그리고 .gitignore 파일에 local.properties 파일은 기본적으로 등록이 되어 있기 때문에 깃허브에 add 되지 않는다.
이렇듯 보안상 깃허브에 푸쉬해서는 안되는 파일이 있다면 .gitignore 파일에 추가 등록해주면 된다.
앱 수준의 gradle 에서 다음과 같이 선언해주면 BuildConfig 클래스가 생성되어 코드에서 사용할 수 있다.
local.properties파일
## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file should *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=D\:\\
api.key=""
build.gradle(app)
// build.gradle (app)
plugins {
// ..
}
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
android {
//..
defaultConfig {
// ..
buildConfigField "String", "API_KEY", properties['api.key']
}
}
클래스에서 사용하기
@GET("search")
suspend fun searchMuschrooms(
@Query("Key") Key: String = BuildConfig.API_KEY,
): MushroomResponse
주의할 점은 BuildConfig 클래스는 빌드시에 생성되는 클래스이므로 , local.properties 파일에 수정이 있을 때 마다 재 빌드를 해주어야 한다.