반응형
프로젝트 관리를 위해 Git과 같은 형상관리 툴을 사용할 경우 API 키 값과 같은 중요 정보들이 노출될 수 있음을 고려해야 한다. 안드로이드에서 일반적으로 local.properties를 gitignore에 등록하여 외부 노출을 막는다. 이 점을 이용하여 local.properties에 중요 값을 저장하고, 앱의 빌드 정보에 키 값을 추가하여 BuildConfig로 코드 상에서 접근할 수 있다.
◾ local.properties 임시 값 설정
/**
* local.properties
*/
API_KEY_1 = "89sdfsbsn815832jdsfkjedv"
API_KEY_2 = "04kjcasvbcxzv632jbvzj35f"
API_KEY_3 = "cbfhb518gfa0h52ngf=4ynb3"
예시를 위한 임시 키 값을 만든다.
◾ BuildConfig 클래스 생성
/**
* build.gradle
*/
android {
...
buildFeatures {
buildConfig = true
}
}
bulidFeatures 블록에서 buildConfig를 true로 설정하면 안드로이드 빌드 시스템이 BuildConfig 클래스를 생성한다.
◾ local.properties 값 BuildConfig에 추가하기
/**
* build.gradle
*/
import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
android {
...
defaultConfig {
...
// 1
buildConfigField(
"String",
"API_KEY_1",
gradleLocalProperties(rootDir).getProperty("API_KEY_1") ?: ""
)
// 2
fun key(pKey:String): String = gradleLocalProperties(rootDir).getProperty(pKey) ?: ""
buildConfigField("String", "API_KEY_2", key("API_KEY_2"))
}
}
buildConfigField를 사용하면 해당 값들이 BuildConfig 클래스에 추가된다. 함수를 만들어서 '2'처럼 사용할 수 있다.
◾ Manifiest에서 local.properties 값 사용하기
/**
* build.gradle
*/
import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
android {
...
defaultConfig {
...
fun key(pKey:String): String = gradleLocalProperties(rootDir).getProperty(pKey) ?: ""
manifestPlaceholders["API_KEY_3"] = key("API_KEY_3")
}
}
/*
* ActivityManifest
*/
<meta-data
android:name="AppKey"
android:value="${APP_KEY_3}"/>
manifestPlaceholders는 build.groadle에 정의한 값을 Manifest에 주입할 수 있게 해주는 기능이다.
println(BuildConfig.API_KEY_1)
println(BuildConfig.API_KEY_2)
코드 상에서 Key 값을 사용할 때 위 처럼 호출하면 된다.
Android_Study/BuildConfig Mange Key at master · OhGyong/Android_Study
안드로이드 개발 공부. Contribute to OhGyong/Android_Study development by creating an account on GitHub.
github.com
반응형
'Android > Security & Privacy' 카테고리의 다른 글
[Android] Cipher를 사용하여 암호화 복호화 해보기 (0) | 2022.11.24 |
---|---|
[Android] 권한(Permission) 처리하기 (0) | 2022.11.07 |