공부/안드로이드

[Android/Kotlin] 카카오 키 숨기기

2월2 2024. 7. 15. 17:23

1. .gitignore에 local.properties 추가하기

숨겨야 하는 키이기 때문에 gitignore에 숨긴다.

/local.properties
local.properties

 

 

2. local.properties에 키 추가하기

만약 카카오 네이티브키가 abcd1234라면 아래처럼 local.properties에 추가한다.

절대 따옴표로 감싸지 않는다.

# 카카오 키 숨기기
KAKAO_APP_KEY = abcd1234
NATIVE_KAKAO_APP_KEY = kakaoabcd1234

 

 

3. build.gradle.kts(Module:app)에 추가하기

local.properties에 넣은 키를 BuildConfig 파일에 넣기 위한 세팅을 한다.

이 때 buildConfigField랑 manifestPlaceholders 사용 방법이 다르다. 

manifestPlaceholders는 AndroidManifest.xml에서 키를 사용하기 위해 쓰인다.

import java.util.Properties

plugins {
    ...
}

// 카카오 로그인 키
val properties = Properties().apply {
    load(project.rootProject.file("local.properties").inputStream())
}
var manifestPlaceholders = mutableMapOf<String, Any>()

android {
    ...

    buildFeatures {
        ...
        buildConfig = true
    }

    defaultConfig {
        ...

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

        // 카카오 로그인 키
        buildConfigField("String", "KAKAO_APP_KEY", "\"${properties.getProperty("KAKAO_APP_KEY")}\"")
        buildConfigField("String", "NATIVE_KAKAO_APP_KEY", "\"${properties.getProperty("NATIVE_KAKAO_APP_KEY")}\"")
        manifestPlaceholders["NATIVE_KAKAO_APP_KEY"] = properties.getProperty("SCHEME_KAKAO_APP_KEY")
    }

 

 

4. Build 또는 Rebuild 프로젝트를 한다.

그러면 [java (generated)] - [패키지명] - [BuildConfig]로 BuildConfig 파일이 생긴 것을 확인할 수 있다. 

BuildConfig 파일을 보면 우리가 local.properties에 넣었던 키를 확인할 수 있다.

/**
 * Automatically generated file. DO NOT MODIFY
 */

public final class BuildConfig {
  
  ...
 
  // Field from default config.
  public static final String KAKAO_APP_KEY = "abcd1234";
  // Field from default config.
  public static final String NATIVE_KAKAO_APP_KEY = "kakaoabcd1234";
}

 

 

5. AndroidManifest.xml에 키 넣기

3번에서 말했듯이 AndroidManifest.xml에서 키를 사용하기 위해 manifestPlaceholders를 사용했다. 

이러고 ${키 이름} 쓰면 된다. 나는 NATIVE_KAKAO_APP_KEY로 지정했으니 다음과 같이 넣었다.

<data
	android:host="oauth"
	android:scheme="${NATIVE_KAKAO_APP_KEY}" />

 

 

6. AndroidManifest.xml이 아닌 곳에 키 넣기 (ex. GlobalApplication)

나는 GlobalApplication에도 네이티브 키를 넣어야 한다. 이번에는 buildConfigField으로 저장했던 것을 다시 꺼내려고 한다. 이때는 BuildConfig.키이름 으로 하면 된다. 나는 KAKAO_APP_KEY로 지정했으니 다음과 같이 넣었다.

class GlobalApplication: Application() {
    override fun onCreate() {
        super.onCreate()
        KakaoSdk.init(this, BuildConfig.KAKAO_APP_KEY)
    }
}