React Native/Android

안드로이드 구글, 카카오톡 로그인이 디바이스에서 안될 때

Juzero 2023. 5. 6. 15:55

1. 문제 상황: 디바이스에서만 구글, 카카오톡 로그인이 안된다. (릴리즈 모드는 됨)

- 에뮬레이터에서 릴리즈 모드로 하면 그건 됨.

- 근데 실제 플레이스토어에서 배포하고 다운받으면 안됨.

 

 

영 중인 영단어 앱테크 캐시보카에는 구글 로그인, 카카오톡 로그인이 있습니다. (iOS에는 애플도)

Debug 모드에서도, Release 모드에서도 로그인이 잘 되는데 실제 디바이스에서만 로그인이 안되는거에요.

 

아무리 찾아봐도 전부 SHA-1 를 제대로 등록했냐? 라는 내용만 자꾸 나옴 ㅠ

구글만 안되는거면 몰라도 카카오톡도 안되는데.. 심지어 release모드에서는 됨;;;;

 

그래서 chatGPT한테 물어봄.

근데 미친 chatGPT가 해결해줬습니다..

on을 one이라 했네 ㅎ

 

 

위에 1번부터 6번까지 쭈욱 한 번씩 검토했어요.

근데 6번에서 ProGuard..? 이게 뭐야? ㅡㅡ 라는 마음으로 구글에 검색

 

 

첫번째 깃헙 들어가면

 

https://github.com/googlesamples/google-signin-unity/issues/144#issuecomment-624924693

 

이런 대답이 있어요

 

심지어 더 찾아보니 훌륭하고 똑똑하신 한국인 개발자 선배님들께서도 작성하신 글이 있어요.

 

https://itstudy-mary.tistory.com/375

 

카카오 API Error 해결] Class not found when unmarshalling: com.kakao.sdk.auth.AuthCodeClient$resultReceiver$1 오류

회사에서 볶아대던 통에 내부 테스트를 거치지 않고 앱이 올라갔다. 그런데 짜잔 없던 오류가 생겼습니다. 저번 버전까지만 잘 되던 카카오톡 로그인이, 분명 디버그apk도 잘 되던게 릴리즈 - 구

itstudy-mary.tistory.com

https://github.com/crossplatformkorea/react-native-kakao-login/issues/266

 

안드로이드 카카오톡 배포버전에서 튕기는 문제 발생 · Issue #266 · crossplatformkorea/react-native-kakao-l

Version of kakao-login libraries 3.3.3 Version of react-native 0.64.1 Platforms you faced the error (IOS or Android or both?) android Expected behavior 카카오톡 정상 로그인 Actual behavior 개발 버전까지는 정상적으로 로그...

github.com

 

 

해결방법

android/app/proguard-rules.pro 에 아래 코드를 추가합니다.

-keep class com.kakao.sdk.**.model.* { <fields>; }
-keep class * extends com.google.gson.TypeAdapter
-keep class com.google.googlesignin.** { *; }

 

 

문제 분석

 app/build.gradle에 minifyEnabled 라는 코드가 있습니다.

minifyEnabled는 배포된 apk에서 코드를 베끼지 못하도록 코드 난독화해주는 기능이에요.

이걸 false하더라도 안드로이드는 기본적으로 제공하는 옵션입니다. 

코드를 난독화하는 과정에서 kakao 로그인과 google 로그인의 api도 난독화 되어 읽지 못하는 겁니다.

proguard에서 해당 옵션을 예외처리해줌으로써 해결하였습니다 ~!