Hiding API Keys
안드로이드 앱을 개발하다 보면 API Key를 AndroidManifest.xml 에 적어야 하는 경우가 있는데,
해당 API Key를 변수로써 이용하는 방법을 써보았다.
1. local.properties 를 열어서
MAPS_API_KEY=YOUR_API_KEY <- 이런식으로 이용하고자 하는 API 키를 변수에 저장해준다. (안드로이드의 경우 local.properties가 .gitignore에 설정 되어 있기에 따로 .gitignore를 설정할 필요는 없다. )
2. 그 다음 build.gradle (~~~.app 으로 되어있는) defaultConfig 요소에
해당 코드를 추가한다.
defaultConfig {
Properties properties = new Properties()
if (rootProject.file("local.properties").exists()) {
properties.load(rootProject.file("local.properties").newDataInputStream())
}
// Inject the Maps API key into the manifest
manifestPlaceholders = [ mapsApiKey : properties.getProperty("MAPS_API_KEY", "") ]
}
위 코드에서 mapsApiKey 는 내가 사용하고자 하는 이름이 될 것이고, getProperty() 에서의 MAPS_API_KEY 는 맨 처음 설정했던 local.properties 에서의 api key를 저장한 변수명을 넣어줘야 한다.
3. 마지막으로 AndroidManifest.xml 에서
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="${mapsApiKey}" />
이런 형식으로 android:value="${build.gradle에서의 사용하고자 하는 이름}" 사용해주면 된다.
이런 방식을 이용해서 github에 코드를 올리면, 자신이 발급받은 API_KEYS 값 들을 확인할 수 없다.