2024. 4. 14. 20:31ㆍ문제 해결
이번 팀 프로젝트에서 카카오 로그인을 맡게 되었는데
카카오 로그인을 할 때 필요한 API 키 값이 github에 올라가지 않게 숨겨야 한다는 것을 알게되었습니다!
그래서 "에이 뭐 별거 아니겠지" 라고 생각하고 다른 분들이 적어두신 블로그를 참고해서 해보았는데
계속 문제가 생겼습니다,,
아니 다들 똑같은 방식으로 API키를 숨기는데
저만 안되다보니 "내가 뭘 잘못하고 있나..?" 라는 생각이 들었었는데
같이 스터디 하시는 분께서 자신도 안됐었다면서 새로운 방법을 알려주셨습니다!
우선 다른 분들께서 하시는 코드를 했을 때 어떤 문제가 발생하는지 보여드리겠습니다!(블로그 참고했을때)
문제 발생
1, local.properties에 키 값을 적어준다 (gitignore에서 안보이게 하는 부분은 대부분 되어있어서 스킵했습니다)
2, Build.gradle.kts(app)에 가서 이렇게 코드를 작성한다
Properties properties = new Properties()
Properties.load(project.rootProject.file("local.properties").newInputStream)
이후 defaultConfig 내부에 이렇게 코드를 작성했습니다
buildConfigField("String", "KAKAO_API_KEY", "\"${properties.getProperties["KAKAO_API_KEY"]}\"")
buildConfigField("String", "KAKAO_API_KEY", "\"${properties.getProperties["NATIVE_APP_KEY"]}\"")
근데,,,, 밑에 사진을 보시면 계속 에러가 떠있습니다,,
Sync now를 해도 무한 에러가 나옵니다,,
이후 이걸 해결해보기 위해 진짜 구글에 API 키 숨기는 블로그를 다 찾아봤는데
대부분의 사람들이 이렇게 해결을 다 하시더라구요,,,,,
그래서 어떡하지 하다가
스터디 같이 하시는 분께서 알려주셔서 해결할 수 있었습니다!!
해결방안!
1, 위의 코드와 같이 local.properties에 키값을 작성해줍니다
2, 여기서부터 달라지는데 Build.gradle.kts(app)에서 코드를 이렇게 작성해줍니다
val localProperties = Properties()
localProperties.load(project.rootProject.file("local.properties").inputStream())
val kakaoApiKey = localProperties.getProperty("KAKAO_API_KEY")?:""
val nativeAppKey = localProperties.getProperty("NATIVE_APP_KEY")?:""
이후 defaultConfig 안에서 이렇게 작성을 해줍니다
buildConfigField("String", "KAKAO_API_KEY", kakaoApiKey)
//manifest에서 사용
manifestPlaceholders["NATIVE_APP_KEY"] = nativeAppKey
이후 이 부분이 매우매우매우매우매우 필수인데 이 부분을 하지 않았다가 하루를 더 소비했습니다,,,
buildFeatures에서 밑줄 친 부분을 true로 해줘야하고
이후 Sync now를 한 뒤
1, 안드로이드 스튜디오 좌측 상단의 햄버거 아이콘을 클릭한다
2, build에 들어간다
3, Rebuild Project를 눌러준다!
이렇게 하면 API키를 숨기는 세팅은 완료가 되었습니다!
이제 사용법을 봐보겠습니다!
어떻게 쓰는가?
1, AndroidManifest에서 사용
<data android:host="oauth"
android:scheme="${NATIVE_APP_KEY}"/>
이런 식으로 lacal.properties에서 정의해둔 이름으로 적어주시면 됩니다!
2, activity or Fragment에서의 사용
private fun kakaoLogin(){
val TAG = "test1234"
//kakaoSDK 초기화
KakaoSdk.init(requireActivity(), BuildConfig.KAKAO_API_KEY)
이렇게 사용하면 잘 되는 걸 확인할 수 있습니다!
다른 분들의 블로그를 참고하시다가 정 안되시면 이렇게 하는 방법도 있는 거 같으니 참고 해주시면 좋겠습니다!
'문제 해결' 카테고리의 다른 글
Storage에서 이미지를 받아와 ViewPager에 보여주고 싶다면?? (2) | 2024.04.20 |
---|---|
RecyclerView Firebase 연결해서 리스트 가져오기! (1) | 2024.04.19 |
커스텀 다이얼로그를 만들어보자! (안드로이드/코틀린) (0) | 2024.04.04 |
기본 SplashScreen을 안 보이게 하려면?! (0) | 2024.03.31 |
비밀번호에 특수문자 입력받기!? (0) | 2024.02.21 |