[Android/Kotlin] local.properties에 앱 키 관리하기

코코아의 개발일지·2023년 8월 13일
0

Android-Kotlin

목록 보기
8/31

✍🏻 요구사항 분석

한 번도 앱 키 관리를 해본 적이 없었는데.. 깃허브 레포를 public으로 돌리려면 아무래도 history에 앱 키가 있으면 꺼려져서 방법을 찾아보게 되었다. 나는 카카오 앱 키를 숨기는 방법을 찾아보았다.
.gitignore에 String이 있는 xml 파일을 추가해서 숨기는 방법도 있겠지만 무슨 이유에선지 xml 파일이 깃 이그노어가 잘 안 됐었던 것 같다.
때문에 선택한 방법은 local.properties에 해당 키를 넣고 사용하는 거였다.


💻 코드 작성

* 카카오 앱 키 관리 예시

1. local.properties에 키 넣기

kakao_api_key="{카카오 앱 키}"
kakao_native_key={카카오 앱 키}


{} 안에는 카카오 개발자 계정에 들어가 위의 화면에 나오는 네이티브 앱 키를 넣으면 된다.
kakao_api_key는 따옴표로 감싸져있고, kakao_api_key_no_quotes는 따옴표가 없는지, 그 차이는 뒤에서 설명하도록 하겠다.


2. build.gradle(Module:app)에 넣어주기

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"
    }



3. ApplicationClass에서 설정

  • 코틀린 클래스에서 BuildConfig를 사용하는 방법

카카오 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)
    }
    }
}

3. AndroidManifest에서 설정

<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를 구분해주었다.


📚 참고 자료

profile
우당탕탕 성장하는 개발자

1개의 댓글

comment-user-thumbnail
2023년 8월 13일

개발자로서 배울 점이 많은 글이었습니다. 감사합니다.

답글 달기