API & APP Key를 숨기자
- 카카오 및 구글 API 등 각종 API 연동을 진행하고, 구현 작업을 진행하다 보면 여러가지 API를 사용하게되고, String 값으로 쉽게 노출되어 있다.
- 이런 경우, 유지보수나 타 작업 중 손실될 가능성이 있으며,
- 코드에 누구나 접근 가능하여 Key 값에 대한 보안성이 낮아질 수 있다.
어떻게?
- local.properties 파일에 해당 Key 값을 명시한다.
sdk.dir=/Users/iseung-yong/Library/Android/sdk
kakao_native_app_key="73ru29ffe9i99us22e1ca0"
- build.gradle에서 properties 객체를 통해 BuildConfig에 등록한다.
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
.
.
.
buildConfigField "String", "KAKAO_NATIVE_APP_KEY", properties['kakao_native_app_key']
resValue "string", "kakao_native_app_key", properties['kakao_native_app_key']
BuildConfig?
- gradle 설정값을 java 코드로 접근할 수 있게 하는 클래스
- build.gradle 변경 후 sync시에도 BuildConfig에 반영되지 않을 경우 Rebuild Project 한 번 수행 후 재확인
- 숨김처리한 방식에 따라 아래와 같이 호출할 수 있다.
class GlobalApplication : Application() {
override fun onCreate() {
super.onCreate()
KakaoSdk.init(this, BuildConfig.KAKAO_NATIVE_APP_KEY)
}
}
.
.
.
<data android:host="oauth"
android:scheme="@string/kakao_native_app_key" />