BuildConfig
앱을 빌드하면 BuildConfig
클래스가 생성 됩니다.
이 클래스를 통해 Application id, Build Type, Version code, Version Name
을 확인할 수 있습니다.
해당 클래스에 정의된 상수들을 불러와 디버그시에만 로그를 찍는다든지
api 키값을 변경 할 수 있습니다.
이러한 값들은 App수준의 build.gradle
의 defaultConfig 에서 가져오게 됩니다.
ex)build.gradle
defaultConfig {
applicationId "com.raindragonn.buildconfig"
minSdkVersion 23
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
BuildConfig에 상수 추가 및 사용하기
build.gradle 에 직접 추가
원하는 상수를 추가하려면
defaultConfig 블록 안
에 buildConfigField
를 통해 선언할 수 있습니다.
android {
//...
defaultConfig {
// ...
buildConfigField "String", "API_KEY", '"jkdsfl12ndfs1"'
}
}
빌드 타입에 따라 (debug 와 release) 구분하고 싶은 경우는
buildTypes 에서 각각 선언하면 됩니다.
android {
//...
buildTypes {
release {
//...
buildConfigField "String", "API_KEY", '"릴리즈용 키"'
}
debug {
//...
buildConfigField "String", "API_KEY", '"디버그용 키"'
}
}
}
String 외의 타입
buildConfigField("boolean", "USE_MOCK", "true")
buildConfigField("int", "MOCKING_DATA_SIZE", "10")
properties 파일에 선언 후 가져오기
1.local.properties 에 선언한 값 가져오기
ex) local.properties
SOME_API_KEY = "lkasdfjafdkl2"
ex) build.gradle(app)
plugins {
//...
}
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
android {
//...
defaultConfig {
//...
buildConfigField "String", "SOME_API_KEY", properties['SOME_API_KEY']
}
}
2.gradle.properties 에 선언한 값 가져오기
git에 코드를 공유할때 api키 와 같은 민감한 정보들을 넣어둔 local.properties를 ignore하고 올리기도 합니다.
ex) gradle.properties
SOME_API_KEY = "lkasdfjafdkl2"
ex) build.gradle(app)
plugins {
//...
}
android {
//...
defaultConfig {
//...
buildConfigField "String", "SOME_API_KEY", project.properties["SOME_API_KEY"]
}
사용하기
fun initViews() {
if(BuildConfig.DEBUG) {
binding.debugView.isVisible = true
Log.d(TAG,"디버그 디버그~")
}
}
참고
[안드로이드] local.properties에 API Key값 숨기기