안드로이드에서는 당연하게 릴리즈(배포)버전을 등록할 때 프로가드 규칙을 적용한다.
프로가드(proguard)란?
난독화를 시켜주는 것이다.
앱이 배포되고 나서 중요한 정보가 오가는 앱 내부 정보가 유출되면 안되기 때문이다.
유지보수중인 앱에서 계속해서 ClientError가 발생하였었다.
에러메시지에는 토큰을 찾을 수 없다 하였지만, 디버그 모드에서 확인시 토큰을 정상적으로 잘전달되었다
.
도대체 무엇이 문제인가 계속해서 보던 와중,
디버그 모드에서는 정상적으로, 릴리즈 모드에서는 안되는 것을 확인하였다.
처음엔 TargetSDK가 33, 34일 때의 문제인 줄 알았으나, 아니였다.
다시 한 번 카카오 문서를 들여다 보았고, 프로가드 규칙 예외처리가 있었다...
링크 : https://developers.kakao.com/docs/latest/ko/android/getting-started#project-pro-guard
# kakao
-keep class com.kakao.sdk.**.model.* { <fields>; }
-keep class * extends com.google.gson.TypeAdapter
# https://github.com/square/okhttp/pull/6792
-dontwarn org.bouncycastle.jsse.**
-dontwarn org.conscrypt.*
-dontwarn org.openjsse.**
앱이 오래되었고, 난독화가 안되어 있길래, 난독화를 적용해서 에러로그만 보이도록 예외처리 하였으나,
카카오 로그인이 암호화에 영향이 있는지는 이번 기회에 알게 되었다.
내가 적용하여 발생한 버그이지만..
개인적으로 억울하면서도 여러가지 감정이 느껴진다*: .。. o(≧▽≦)o .。.:*
추가로 네이버는 개발자센터에서 제공하는 것이 아닌 네이버 깃에 공유되어 있다.
링크 : https://github.com/naver/naveridlogin-sdk-android/issues/34
# naver login SDK 5.1.1
-keep public class com.nhn.android.naverlogin.** {
public protected *;
}
-keep public class com.navercorp.nid.** {
public *;
}
감사합니다🍺