안드로이드 프로젝트를 하며 다른 서비스의 API를 이용하는 경우가 종종 생깁니다. 위의 사진은 네이버 지도 API의 사용 가이드입니다. 이처럼 API를 호출할 때 인증을 위해 API key값을 HTTP 헤더에 포함해야 하는 경우가 많습니다.
HTTP 헤더에 API key값을 담아서 요청하기 위해선 해당 key를 어딘가에서 보관하고 있어야 합니다. API key는 인증에 필요한 비밀번호나 마찬가지이므로 보안에 유의하셔야 합니다. 만약 코드상에 상수값으로 하드 코딩이 되어 있다면, Github 등에 노출될 위험이 있기 때문에 .gitignore 파일을 통해 정보가 노출되지 않도록 보관해야 합니다.
이번 글에서는 local.properties 파일을 사용해 API key값을 안전하게 보관하는 방법에 대해 알아보겠습니다.
local.properties에 key 추가
local.properties 파일은 기본적으로 .gitignore 파일에 추가되어 있기 때문에 git을 통해 추적되지 않습니다. 만약 .gitignore 파일에 local.properties이 추가되어 있지 않다면 추가해주시면 됩니다.
local.properties 파일은 프로젝트 최상위 루트 폴더 안에 포함되어 있습니다. 만약 local.properties 파일이 없다면 파일을 만든 뒤, key 값을 추가해줍니다.
## 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/sanghyun/work/android-sdk
api.key="sampleKey"
build.gradle (app 수준)에서 설정
local.properties 파일에 추가한 값을 사용하기 위해서는 접근할 수 있도록 build.gradle 파일에서 설정해줘야 합니다. local.properties 파일을 properties에 로드해준 뒤, buildConfigField를 통해 BuildConfig에 추가해주면 됩니다.
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
android {
...
defaultConfig {
...
buildConfigField "String", "SAMPLE_API_KEY", properties["api.key"]
}
}
BuildConfig에서 값 꺼내오기
프로젝트를 한번 빌드해주게 되면 BuildConfig가 생성되며 아래와 같은 코드가 추가됩니다.
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.leveloper.amadda";
public static final String BUILD_TYPE = "debug";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
// Field from default config.
public static final String SAMPLE_API_KEY = "sampleKey";
}
이제 API key에 접근할 때는 아래처럼 BuildConfig를 통해 접근하면 됩니다.
BuildConfig.SAMPLE_API_KEY
참고
https://yerintil.tistory.com/63
'Android' 카테고리의 다른 글
[Android] 스켈레톤 로딩 화면 구현하기 - Facebook shimmer library (0) | 2021.09.13 |
---|---|
[Android] viewModelScope.launch() 간단하게 바꿔보기 (0) | 2021.09.11 |
[Android] BottomNavigationView에서 Fragment 전환 (3) | 2021.08.09 |
[Android] Kotlin Coroutine 기본 개념 익히기 (0) | 2021.07.29 |
[Android] Paging 3.0 Library 알아보기 - 2 (4) | 2021.07.12 |