[Android] API Key값 관리
안드로이드에서 특정 API를 사용하려고 할 때 API Key값을 가지고 통신을 하게 됩니다.
이때 API Key값을 코드 내부에 작성을 해야 하는데 Git Hub에 해당 코드를 Push 하여 누구나 접근 가능하게 된다면 난처해질 수 있습니다.
이를 보완하기 위한 방법이 바로 local.properties에 Key값을 작성하는 것입니다.
1. gitignore 파일 작성
local.properties에 Key값을 저장할텐데 해당 파일이 Git에 commit 되는 것을 사전에 막는다.
그 이후에 /build 경로도 막는다. 해당 경로에는 BuildConfig라는 파일이 존재하는데, 여기에 API Key를 변수로 저장하기 때문에 이 파일 또한 commit 되면 안 된다.
//.gitignore
local.properties
.gradle/
/build
2. local.properties에 api key 저장
// local.properties
sdk.dir=Android SDK 경로
api_key="나의 API KEY"
local.properties 파일은 빌드 시스템의 로컬 환경 속성을 구성하기 위해 존재하는 파일이며, SDK의 경로도 기재되어 있습니다.
local.properties에 sdk.dir 바로 밑에 API Key 값을 저장합니다.
이때 값은 꼭 큰 따옴표""로 저장해야 합니다.
3. build.gradle(app)에서 local.properties에 새로 등록한 키값 Load
build.gradle파일에서 Properties를 선언하고 local.properties에 등록된 Key값을 Load 해야 합니다.
plugins{
...
}
//추가
//Properties를 선언하고 local.properties에 새로 등록된 api_key값을 load
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
android{
...
defaultConfig{
...
//추가
//load한 api_key값을 BuildConfig 파일에 저장
buildConfigField "String","API_KEY",properties['api_key']
}
}
Load 한 api_key값을 BuildConfig 파일에 저장하면, 싱글톤으로 언제 어디서든지 사용이 가능하게 됩니다.
위와 같이 작성한 뒤 빌드를 하게 되면 BuildConfig 파일에 다음과 같이 기존에 생성되어 있지 않던 상수값이 생성됩니다.
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.example.retrofitExample";
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 API_KEY = "example123";
}
해당 API_KEY값을 다음과 같이 이제 어디서든 사용할 수 있다.
class MainActivity : AppCompatActivity() {
...
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
...
}
companion object{
private const val API_KEY = BuildConfig.API_KEY
}
}
4. 협업 시 주의할 점.
local.properties의 내용만 전달하여 동일하게 작성해주면 됩니다. BuildConfig는 프로젝트 빌드 시 생성되기 때문에 gradle에 선언 후 프로젝트 빌드하면 동일하게 사용 가능합니다.
참고
https://velog.io/@hoyaho/API-키-숨기기-|-Hello-Android
https://devvkkid.tistory.com/201