Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- GSON
- 우테코
- 최상단
- 안드로이드 키보드
- coil
- 4대 컴포넌트
- 안드로이드
- 컴포즈
- 로또 미션
- serialization
- Android
- 멀티모듈
- compose
- buildSrc
- moshi
- broadcast reciver
- android studio
- recyclerview
- 우아한테크코스
- layoutinflater
- activity
- EditText Button
- constraint
- 안드로이드 스튜디오
- 코틀린
- Glide
- 이미지 로딩
- 프리코스
- onscrollstatechanged
- 우테코 6기
Archives
- Today
- Total
정답보다 해답을
[Android] local.properties 활용하여 API 정보 은닉하기 본문
API 키 같은 민감 정보는 절대 하드코딩하지 말고, 항상 안전하게 관리하는 습관을 들여야 합니다.
특히 팀 프로젝트나 오픈소스 활동을 할 때 이런 기본적인 보안 수칙을 지키는 것이 개발자의 기본 소양입니다.
하지만,github이나블로그등에서 유출하는 경우도.. 가끔 있습니다.
API키를 노출하면 보안, API 과다 사용으로 비용이 발생할 수 있습니다.
이 문서에서 설명할 방법을 적용하여, 보다 안전하게 KEY를 관리하는 것을 목표로 합니다.
따라서, local.properties 파일을 활용해서 민감한 정보를 안전하게 관리하고,
코드에서는 이를 불러와 사용하는 방법을 소개하겠습니다.
1. 왜 local.properties를 사용하는가?
- local.properties 파일은 로컬 개발 환경에만 존재하고, 보통 .gitignore에 기본으로 포함되어 있어 깃에 커밋되지 않습니다.
- API 키를 소스 코드에서 분리하면, 오픈소스 프로젝트를 운영할 때도 민감 정보 유출 위험을 줄일 수 있습니다.
- 빌드 시점에 필요한 값만 주입하기 때문에, 코드 관리가 더 깔끔해집니다.
2. 코드로 알아보기
2.1 local.properties 파일 작성
프로젝트 루트(local.properties)에 다음과 같이 민감 정보를 추가합니다.
APP_KEY=API키를 입력해주세요.
주의: 이 파일은 .gitignore에 등록되어 있어야 하며, 절대 커밋하지 않아야 합니다.
2.2 build.gradle.kts 수정
앱 모듈(app/build.gradle.kts)에 다음 코드를 추가하여 local.properties 파일을 읽어옵니다.
manifestPlaceholders는 메니페스트에 API키를 활용하기 위해 사용합니다.
ex) GCP, KAKAO, NAVER
import java.util.Properties
val localPropertiesFile = project.rootProject.file("local.properties")
val properties = Properties()
if (localPropertiesFile.exists()) {
properties.load(localPropertiesFile.inputStream())
} else {
throw GradleException("local.properties 파일이 없습니다. 민감 정보를 추가해 주세요.")
}
android {
...
defaultConfig {
...
// Manifest에 값을 주입할 때 사용
manifestPlaceholders += mapOf(
"APP_KEY" to properties.getProperty("APP_KEY")
)
// Kotlin 코드에서 직접 사용할 수 있도록 BuildConfig에 추가
buildConfigField(
"String",
"APP_KEY",
"\"${properties.getProperty("APP_KEY")}\""
)
}
buildFeatures {
compose = true
buildConfig = true // buildConfig로 키를 가져오기 위해 등록
}
}
2.3 AndroidManifest.xml에서 사용하는 방법
Manifest 파일에서는 아래처럼 사용할 수 있습니다.
이는, API에 따라 상이할 수 있으므로 활용하는 API의 공식문서를 참조하는 것이 좋습니다.
<meta-data
android:name="com.example.APP_KEY"
android:value="${APP_KEY}" />
${} 안에 manifestPlaceholders에서 매핑한 키를 그대로 사용합니다.
2.4 Kotlin 코드에서 사용하는 방법
코틀린 코드에서는 BuildConfig 클래스를 통해 값을 불러올 수 있습니다.
val appKey = BuildConfig.APP_KEY
4. 주의사항 및 개선 아이디어
- local.properties가 없는 환경(예: CI 서버)에서 빌드 실패할 수 있으므로, 필요하면 기본값을 설정하는 것도 고려해야 합니다.
- local.properties 대신 gradle.properties를 사용하는 방법도 있는데, 이는 모듈 간 공유가 필요할 때 유용합니다.
'Android' 카테고리의 다른 글
| Jetpack Compose에서 스크롤바 직접 만들어쓰기 (0) | 2025.04.15 |
|---|---|
| 서버와 대화하는 방법, REST API (0) | 2025.04.10 |
| [Android][Compose] remember와 rememberSaveable, 알고 쓰자 (0) | 2025.04.07 |
| [Android][Compose] Jetpack Compose의 padding, offset, Spacer 차이 정리 (0) | 2025.03.29 |
| [Android] 안드로이드의 픽셀 밀도와 단위 정리 (dp, sp, px 등) (0) | 2025.03.27 |