안드로이드 앱 개발에서는 API Key와 같은 민감한 정보를 소스 코드에 하드코딩하면 보안상 위험합니다.
이러한 문제를 방지하기 위해 **buildConfigField**를 사용하여 API Key를 안전하게 관리해야 하지만, 매번 구현할 때마다 세부적인 과정을 잊어버리곤 했습니다. 그래서 이번 기회에 정리해 두고 필요할 때 빠르게 참고할 수 있도록 내용을 남깁니다.
1. 프로젝트 설정: local.properties에 API Key 저장하기
프로젝트 루트 디렉토리의 local.properties 파일에 API Key를 추가합니다. 이 파일은 기본적으로 .gitignore에 포함되어 있어 Git 저장소에 업로드되지 않습니다.
예시: local.properties
KAKAO_NATIVE_APP_KEY=your_kakao_native_app_key
여기서 your_kakao_native_app_key는 실제 Kakao Native App Key로 대체하세요.
2. build.gradle 파일에서 설정하기
app 모듈의 build.gradle 파일에서 buildConfigField를 사용하여 API Key를 안전하게 관리합니다.
build.gradle
android {
...
val properties = Properties()
properties.load(FileInputStream(rootProject.file("local.properties")))
defaultConfig {
applicationId = "kr.co.project"
minSdk = 23
targetSdk = 34
versionCode = 1
versionName = "0.0.1"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
// BuildConfig에 API Key 추가
buildConfigField("String", "KAKAO_NATIVE_APP_KEY", properties.getProperty("KAKAO_NATIVE_APP_KEY"))
}
}
설명
- buildConfigField
BuildConfig 클래스에 KAKAO_NATIVE_APP_KEY라는 이름으로 API Key를 추가합니다.
앱 실행 시 BuildConfig.KAKAO_NATIVE_APP_KEY를 통해 API Key에 접근할 수 있습니다.
3. 코드에서 BuildConfig로 API Key 사용하기
코드에서는 BuildConfig를 사용해 API Key를 참조합니다. 이를 통해 민감한 정보를 소스 코드에 직접 노출하지 않고 안전하게 사용할 수 있습니다.
예시 코드
@HiltAndroidApp
class Application : Application() {
override fun onCreate() {
super.onCreate()
// BuildConfig를 통해 API Key를 안전하게 가져와 Kakao SDK 초기화
KakaoSdk.init(this, BuildConfig.kakaoNativeAppKey)
}
}
요약
- local.properties에 API Key를 저장합니다.
- build.gradle의 buildConfigField를 사용해 API Key를 관리합니다.
- 코드에서는 BuildConfig를 사용해 API Key를 참조합니다.
반응형
'Android > Android Core' 카테고리의 다른 글
[Android/Kotlin] 뒤로가기 기능을 구현하는 방법: OnBackPressedDispatcher 활용법 (0) | 2024.12.03 |
---|---|
[Android/Kotlin] Kakao Map V2: 특정 좌표를 모두 화면에 표시하기 (0) | 2024.12.02 |
[Android/Kotlin] 안드로이드 앱에서 카카오 SDK를 사용해 OAuth 로그인을 구현하는 방법 (2) | 2024.11.09 |
[Android/Kotlin] EncryptedSharedPreferences 사용하기: 보안 강화된 데이터 저장 방법 (0) | 2024.11.08 |
[Android/Kotlin] CameraX에서 발생한 'Use case binding failed' 오류를 조건부 바인딩으로 해결하기 (1) | 2024.11.01 |