한 번도 앱 키 관리를 해본 적이 없었는데.. 깃허브 레포를 public으로 돌리려면 아무래도 history에 앱 키가 있으면 꺼려져서 방법을 찾아보게 되었다. 나는 카카오 앱 키를 숨기는 방법을 찾아보았다.
.gitignore
에 String이 있는 xml 파일을 추가해서 숨기는 방법도 있겠지만 무슨 이유에선지 xml 파일이 깃 이그노어가 잘 안 됐었던 것 같다.
때문에 선택한 방법은 local.properties
에 해당 키를 넣고 사용하는 거였다.
kakao_api_key="{카카오 앱 키}"
kakao_native_key={카카오 앱 키}
{}
안에는 카카오 개발자 계정에 들어가 위의 화면에 나오는 네이티브 앱 키
를 넣으면 된다.
왜 kakao_api_key
는 따옴표로 감싸져있고, kakao_api_key_no_quotes
는 따옴표가 없는지, 그 차이는 뒤에서 설명하도록 하겠다.
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def kakaoApiKey = properties.getProperty('kakao_api_key_no_quotes')
android {
compileSdk 32
defaultConfig {
...
buildConfigField "String", "KAKAO_API_KEY", properties['kakao_api_key']
// manifest에서 쓸 수 있도록 지정
manifestPlaceholders = [KAKAO_API_KEY : kakaoApiKey]
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
카카오 API를 쓰려면 Kakao SDK를 초기화해줘야하는데, 이 때 kakao_api_key
를 넣어준 BuildConfig.KAKAO_API_KEY
가 들어간다.
class ApplicationClass: Application() {
...
override fun onCreate() {
super.onCreate()
// Kakao SDK 초기화
KakaoSdk.init(this, BuildConfig.KAKAO_API_KEY)
}
}
}
<activity
android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity"
android:exported="true"
android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="oauth"
android:scheme="kakao${KAKAO_API_KEY}"/>
</intent-filter>
</activity>
이 부분에서 따옴표가 있는 kakao_api_key
를 쓰면 실기기에서는 돌아가지만, 애뮬레이터에서는 로그인이 안 되는 문제가 발생한다. 원인은 잘 모르겠지만 아마 "${KAKAO_API_KEY}" 안에 따옴표가 그대로 들어가서 그런 것은 아닐까 하는 생각이 든다. 해당 이슈 때문에 따옴표가 있는 kakao_api_key
와 없는 kakao_api_key_no_quotes
를 구분해주었다.
개발자로서 배울 점이 많은 글이었습니다. 감사합니다.