-
Notifications
You must be signed in to change notification settings - Fork 133
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
앱 실행 직후 종종 crash 발생 - llegalStateException: Session is not initialized. Call KakaoSDK#init first. #91
Comments
kakao sdk 버전 확인 중에 제 gradle.properties 파일에 KAKAO_SDK_VERSION=1.14.0 가 포함되어 있었네요. 이걸 지우고 확인해보겠습니다. |
지우고 새로 빌드한 후에도 여전히 crash 가 발생합니다. |
manual install 로 전환하니 해당 문제가 안 나타납니다. 같은 문제를 겪는 분들은 참고하세요~ |
@warmherz 피드백 감사합니다.혹시 크래쉬의 원인으로 의심되는 부분이 있나요? https://devtalk.kakao.com/t/session/19450 이 글이 관계가 있는거같은데 |
@heyman333 KakaoSDK.init(...) 이 호출되는 타이밍이 link 방법에 따라서, 그리고 폰에 따라서 미묘하게 늦어지는 경우가 있는 것 같습니다. |
@warmherz 네 한번 테스트 해보겠습니다. 감사합니다. |
아마 빌드환경에 따른 버그인것 가테요 ... 문제 재현이 힘들어서 클로즈하겠습니다 ㅠㅠ |
@warmherz // mainApplication.java
if (KakaoSDK.getAdapter() == null) {
KakaoSDK.init(new KakaoSDKAdapter(getApplicationContext()));
} 아래 패키지들도 추가로 import 해주시구요. import com.kakao.auth.KakaoSDK;
import com.dooboolab.kakaologins.KakaoSDKAdapter; 위 코드추가로 이슈가 해결이 안되시면 react-native-kakao-login 에 RNkakaoLoginModules.java 에 아래 코드까지 추가해보세요. @Override
public void onHostResume() {
if (KakaoSDK.getAdapter() == null) {
KakaoSDK.init(new KakaoSDKAdapter(reactContext.getApplicationContext()));
reactContext.addActivityEventListener(this);
callback = new SessionCallback();
Session.getCurrentSession().addCallback(callback);
Session.getCurrentSession().checkAndImplicitOpen();
}
} |
가이드해주셔서 정말 감사합니다. |
2.2.0 버전에서 똑같은 현상발생합니다. 이슈 다시 오픈해주실 수 있나요? @warmherz 혹시 initialize에 영향을 주는 다른 네이티브 모듈 쓰고 계신게 있나요? |
@keepcosmos 네 다시 오픈할게요. |
@heyman333 @HwangJJung 님이 제안해준 코드가 해결책은 맞습니다. 별도 쓰레드에서 resume시켰기 때문에, 경우에 따라서 KakaoSDK의 getSession 호출시 오류가 발생하였습니다. 해당 라이브러리는 react-native-splash-screen이었어요. 감사합니다. |
@keepcosmos react-native-splash-screen 를 쓰고 있습니다. |
@warmherz KakaoSDK 에서 안드로이드 액티비티 생명주기 중에, 허나 react-native-splash-screen은 별도의 activity 스레드를 만드는 것으로 보입니다. 아마 SplashScreen.show(this);
super.onCreate(savedInstanceState); 아마 MainActivity.java 에 저렇게 설정하셨을거에요. 즉, show메서드가 생성한 스레드가 만든 activity가 resume단계에 들어설 때, MainActivity의 KakaoSDK가 초기화 되지 않았다면 문제가 발생합니다. super.onCreate(savedInstanceState);
SplashScreen.show(this); 이렇게 순서를 바꾸어 해결하였습니다. 다시 한 번 참고로, 저는 안드로이드도 자바도 RN도 익숙하지 않아서 위 설명이 정확하지 않을 수 있습니다. |
@HwangJJung 해당 메뉴얼대로 작업중에 error: can 에러가 발생하네요.. 해당모듈은 수동으로 설치해야하나요? rn버전이 0.62라 오토링크로 설치되었는데 설치시에 해당모듈들이 자동으로 링크되는건가요? |
@Dngel 네 오토링크로 설치가 되므로 특별하게 메뉴얼 설치가 필요하신 경우가 아니라면 자동으로 설치 됩니다. |
저도 같은 에러가 나서 메뉴얼 인스톨로 해봐도 똑같네요 ㅜㅜ 위에 RNKakaoLoginsPackage 를 먼저 생성해주니 개선되었다는 글이 있던데 어떻게 먼저 생성하도록 수정 할 수 있을까요?? |
이 가이드를 따라서 빌드시 com.kakao.auth.KakaoSDK를 못 읽어서 오류가 납니다 |
@JongGyuChoi @Dngel |
오토링크로 말씀이신가요? 아니면 메뉴얼 인스톨인가요? |
오토로 진행하셔도 됩니다! |
@heyman333 @HwangJJung 저도 com.kakao.auth.KakaoSDK를 못 읽어서 오류가 납니다 |
@warmherz 어떻게 해결하셨는지 좀만 더 자세히 여쭤볼 수 있을까요?? |
@Dngel 해결하셨나용?? |
onHostResume 구현 후에도 여전히 발생합니다. 아마 Session 객체와 라이프 사이클하고 연관이 있을 것 같은데요, 자체 테스트 후 PR 올려볼께요 |
@koalagon 감사합니다 😙 |
간헐적 문제라 확인할 방법은 없지만, 일단 PR은 올렸습니다. |
버젼 2.4.5 에서 현재 재현되는듯 합니다 ㅠ. (Crashlytics 에 고객 기기들 로그) |
@kosick 감사합니다. 혹시 해결된다면 좀 알려주세요 ㅠㅠ |
@heyman333 드디어? ㅠㅠ 해결했습니다. 여기에 Step 2.project/module 레벨의 build.gradle에 디펜던시 설정 부분이 있습니다. |
@kosick 감사합니다. 저번 PR로 onResume에서 exception 내는 것은 잡았는데, MainAppilcation인가에서 계속 같은 exception을 던져서 의아했는데, 이렇게 고치면 되겠네요. |
Version of kakao-login libraries
2.1.2 에 Kakao SDK 1.25.0 버전을 사용합니다.
Version of react-native
0.61.4
Platforms you faced the error (IOS or Android or both?)
Android
Expected behavior
앱 실행 후 스플래쉬 화면 진입
Actual behavior
항상 그런 건 아니지만 너무나 자주 앱 실행 시 아래와 같은 예외가 발생합니다.
Fatal Exception: java.lang.RuntimeException: Unable to resume activity {com....MainActivity}: java.lang.IllegalStateException: Session is not initialized. Call KakaoSDK#init first.
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4016)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4048)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1950)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7073)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
Caused by java.lang.IllegalStateException: Session is not initialized. Call KakaoSDK#init first.
at com.kakao.auth.Session.getCurrentSession(Session.java:111)
at com.kakao.auth.KakaoSDK$1.onActivityResumed(KakaoSDK.java:69)
at android.app.Application.dispatchActivityResumed(Application.java:264)
at android.app.Activity.onResume(Activity.java:1403)
at androidx.fragment.app.FragmentActivity.onResume(FragmentActivity.java:514)
at com.facebook.react.ReactActivity.onResume(ReactActivity.java:55)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1412)
Tested environment (Emulator? Real Device?)
Real device 이며 갤 S8, 갤노트8 등 다양한 기종에서 발생하고 있습니다.
The text was updated successfully, but these errors were encountered: