카카오 로그인 선택 호출시 Material3 테마 충돌

문의 시, 사용하시는 SDK 버전 정보와 디벨로퍼스 앱ID를 알려주세요.

Faq 목록 - 10. Android ( Faq 목록 입니다 ) 먼저 확인해주세요.


카카오 SDK 버전: 2.23.0
디벨로퍼스 앱ID: 1343954

안녕하세요 안드로이드 native 로 카카오 로그인 기능 중
카카오 로그인 방법 선택을 위해 loginWithKakao 메소드 호출 시
앱이 Material3 테마를 사용중일 때 충돌이 발생합니다.

소스를 확인해 보니 login_select_bottom_sheet 에서 Material2 디자인의 Button 을 사용중인것으로 확인되는데
로그인 방법 선택 기능을 사용하기위해선 Material2 테마 사용이 강제되는것인지 궁금합니다.

상세 stackTrace
android.view.InflateException: Binary XML file line #54 in kr.nanoit.messagescheduler:layout/login_select_bottom_sheet: Binary XML file line #54 in kr.nanoit.messagescheduler:layout/login_select_bottom_sheet: Error inflating class com.google.android.material.button.MaterialButton
Caused by: android.view.InflateException: Binary XML file line #54 in kr.nanoit.messagescheduler:layout/login_select_bottom_sheet: Error inflating class com.google.android.material.button.MaterialButton
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:858)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1010)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1127)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)
at android.view.LayoutInflater.inflate(LayoutInflater.java:686)
at android.view.LayoutInflater.inflate(LayoutInflater.java:538)
at com.kakao.sdk.user.LoginBridgeBottomSheetFragment.onCreateView(LoginBridgeBottomSheet.kt:79)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3119)
at androidx.fragment.app.DialogFragment.performCreateView(DialogFragment.java:770)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:577)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:286)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2214)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2115)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2052)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3327)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3237)
at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:263)
at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:350)
at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:238)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1510)
at android.app.Activity.performStart(Activity.java:8315)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3701)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2308)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7898)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.MaterialComponents (or a descendant).

안녕하세요.

제공되는 SDK가 Material2를 사용하고 있어 여기서 사용하는 일부 테마를 v3에서는 찾을 수 없어 오류 발생된 것으로 보입니다.
호환되는 테마 속성을 추가하면 우선 해결은 가능할 것으로 보이는데요. 확인후 답변 드리겠습니다.

안녕하세요

이슈가 재현되지 않아서 앱에 의존성 추가 목록 첨부해주시면 추가적으로 확인해보도록 하겠습니다.

1개의 좋아요

안녕하세요

이슈 재현을 위해 테스트 레포지토리 공유드립니다
https://github.com/Kairyx-dev/KakaoLoginTest.git

테스트 해본 결과 앱 테마에 bottomSheetDialogTheme 를 설정하게되면 발생하는것으로 보입니다.

1개의 좋아요

안녕하세요.

레포지토리를 공유해주신 덕분에 훨씬 수월하게 이슈 파악할 수 있었습니다.

loginWithKakao() 호출 시 노출되는 바텀시트에서 MaterialButton을 사용하고 있는데요, MaterialButton은 MaterialComponents 테마의 context를 필요로 합니다.
이런 이유로 이슈 상황처럼 MaterialComponents 테마가 아닌 테마를 사용하고 있으면 크래시가 발생하는 것으로 보입니다.

해당 이슈는 바텀시트를 띄우는 SDK 내의 Activity가 MateiralComponents 테마를 사용하도록 수정해서 대응할 예정이고, 빠른 시일 내에 수정된 버전 배포할 수 있도록 하겠습니다.

구현 상의 번거로움이 있어서 권장하는 방법은 아니지만 해당 기능을 급하게 사용해야한다면 프로젝트에 MaterialComponents 테마를 사용하는 투명한 Activity 하나를 추가하고, 해당 Activity 에서 loginWithKakao() 를 호출하도록 하는 방법도 가능하니 이 부분도 고려해보시면 좋을 것 같습니다.

이슈 제보주셔서 감사합니다.

3개의 좋아요

네 빠른 대응 감사드립니다.

1개의 좋아요

안녕하세요.

제보주신 이슈 대응된 2.23.1 버전 배포되었습니다.

이슈 제보주셔서 다시 한번 감사드리고, 내부 사정으로 인해 SDK 다운로드 페이지는 다음주 중으로 업데이트될 수 있는 점 참고 부탁드립니다.

1개의 좋아요