API 키 값을 github에 직접 보관하는 일은 위험합니다.
그래서 안드로이드앱을 개발하는 경우,
Local.properties를 활용해서 안전하게 보관해야 하는데요.
오늘은 이 방법에 대해서 정리하겠습니다.
1. local.properties
local.properties파일은 다음의 목적으로 존재합니다.
- 안드로이드 SDK위치 저장: 개발자마다 다를 수 있기 때문에, local.properties에 저장해서 사용
- 민감한 정보 보호: API키, 비밀번호등을 안전하게 저장
- 개발자별로 다른 설정
local.properties는 대부분 '.gitignore'파일에 포함되어 있지만,
중요한 값을 넣기전에, 한번 더 확인해 보아야 합니다.
Gradle빌드시에 이 파일의 정보를 사용할 수 있게 해주므로,
안전하게 값을 사용할 수 있습니다.
2. local.properties 사용
최초에 local.propeties파일을 열어보면,
아래와 같이 안드로이드 sdk의 위치가 저장되어 있는 것을 볼 수 있습니다.
## 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=/Users/tester/Library/Android/sdk
이 글에서는 api키값을 넣어보도록 하겠습니다.
이 때 키 값의 이름을 짓는 네이밍 컨벤션은 다음과 같습니다.
- 소문자 사용
- 단어 사이를 점으로 구분
test.api.key="132324242ab"
3. 저장한 값 불러와 사용하기
그럼 이 값을 어떻게 불러와서 사용하는지 보겠습니다.
먼저 app레벨의 build.gradle에서 아래와 같이 local.properties 값을 로드합니다.
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
android {
defaultConfig {
buildConfigField "String", "TEST_API_KEY", properties["test.api.key"]
}
}
이제 BuildConfig을 통해서 키에 접근할 수 있게 되었습니다.
참고로 BuildConfig에 관해서는 아래 글을 참조해 주세요.
>> BuildConfig 와 ProductFlavor 정리 # BuildTypes BuildConfigField
이제 코드에서 이 값을 아래와 같이 불러와 사용할 수 있습니다.
val apiKey = BuildConfig.TEST_API_KEY
참고로, build과정을 한번 거쳐야 하기 때문에,
코드에서 BuildConfig의 값에 접근하려면,
rebuild를 한번 해주고 나서 사용해야 Compile Error가 발생하지 않습니다.
'Android 개발 > Android' 카테고리의 다른 글
Android Intent 결합시 사용하는 OR 비트 연산자 (2) | 2024.12.21 |
---|---|
BuildConfig 와 ProductFlavors 정리 # BuildConfigField vs ResValue (0) | 2024.12.18 |
Vibrator 로 구현하는 안드로이드 진동 (0) | 2023.05.23 |
SharedPreference 로 간단한 데이터 저장하기 # Android (2) | 2023.04.27 |
getLaunchIntentForPackage 로 다른 앱을 실행 하는 방법 # query Android 11 (0) | 2023.04.20 |
함수안에 함수 넣기 # Closure Local functions Kotlin (0) | 2023.04.15 |
RemoteConfig 이용해서 다이나믹하게 앱 업데이트 하기 # Android (1) | 2023.03.23 |
Target Api 31 ( Android12 ) 에서 적용해야 하는 사항들 # Location Intent Filters exported mutability (0) | 2022.12.01 |
Contentprovider 와 ContentResolver 이용한 CRUD # Mime-type Uri (1) | 2022.11.18 |
Android 리소스 정리시 사용하는 Naming Convention (0) | 2022.11.12 |
댓글