카카오 로그인이나 API 키를 사용하게 될 경우
Github와 같이 다른 사람들이 볼 수 있는 곳에 노출을 시키면 안되겠죠?
그래서 저희는 local.properties에 값을 적어준 것을 활용해서 API 키를 숨기고는 합니다!
그냥 코틀린 코드에서 숨기는 방법은 제가 알고있었으나,
이번에 카카오 로그인 API를 쓰면서AndroidManifest에서도 사용을 해야하는데 방법이 되지를 않더라고요...
검색을 해봐서 하려고 하는데 검색된 방법들을
아무리 몇개를 다해봐도 안되는거에요??
그래서 간신히 찾은 해결 방법을 공유하려고 합니다!
1️⃣ local.properties에 API 키 넣어놓기
🚨 여기서 잠깐 !
다른 분들이 하는 방법대로 하니까 문제가 발생했습니다...
Properties properties = new Properties()
properties.load(project.rootProject..file("local.properties").newInputStream)
def kakaoApiKey = properties.getProperty('kakao_native_key')
android {
defaultConfig {
buildConfigField "String", "KAKAO_API_KEY", properties['kakao_api_key']
manifestPlaceholders = [KAKAO_API_KEY : kakaoApiKey]
}
우선 처음에 build.gradle.kts (:app)에 가서 local.properties를 사용할 수 있도록 해준 후
거기서 key 값을 가져와서 사용을 했는데요... 웬걸
싹 다 오류가 난걸요 ... 하하
우선 빌드도 안됩니다...
아무리 찾아봐도 봐도봐도 다 똑같이 하시더라고요...
그래서 다른 방법이 있나 찾고 또 찾았습니다!
2️⃣ build.gradle.kts (:app) 이렇게 작성하기 !
val localProperties = Properties()
localProperties.load(project.rootProject.file("local.properties").inputStream())
val kakaoApiKey = localProperties.getProperty("KAKAO_API_KEY")?:""
android {
defaultConfig {
buildConfigField("String", "KAKAO_API_KEY", kakaoApiKey)
manifestPlaceholders["NATIVE_APP_KEY"] = nativeAppKey
}
위에 코드와 달라진 점은 우선 new Properties가 아니라 그냥 Properties를 선언해줍니다!
그 후 kakaoApiKey를 localProperties에서 getProperty로 가져옵니다!
다음으로 defaultConfig 안에서 buildconfigfield를 사용해서 kakao_API_KEY로 코드에서 쓸 수 있도록 해줍니다.
또한, manifestPlaceholders를 이용해서 AndroidManifest에서도 사용할 수 있도록 해줍니다!
buildFeatures {
buildConfig = true
}
위에서 사용한 buildConfig를 사용할 수 있도록 buildFeature에 true를 추가해줍니다!
3️⃣ build sync now를 누른 후 실제로 코드와 AndroidManifest에서 사용한다.
코드에서 사용하기
// kakaoSDK 초기화
KakaoSdk.init(requireActivity(), BuildConfig.KAKAO_API_KEY)
AndroidManifest에서 사용하기
<data
android:host="oauth"
android:scheme="${NATIVE_APP_KEY}" />
이런식으로 코드나 AndroidManifest에서 활용하면 됩니다!
검색하니까 제가 했던 방법은 많이 나오지 않아서...
이 방법으로도 다들 사용해보시면 좋을 것 같습니다!
'Studying > Android' 카테고리의 다른 글
gitignore 설정을 잘못했는데 어쩌지😥 (부제: git 캐시 삭제) (1) | 2024.04.28 |
---|---|
[원티드 프리온보딩 안드로이드 챌린지 3월] Compose (4) | 2024.03.05 |
[INTERVIEW 2주차] Annotation (0) | 2023.06.30 |
[INTERVIEW 2주차] Dialog and Toast, SnackBar (0) | 2023.06.30 |
[INTERVIEW 2주차] MainThread + Handler (0) | 2023.06.30 |