728x90

카카오 로그인 연동시키는 부분에서 

llegalStateException: Session is not initialized. Call KakaoSDK#init first.

이런 에러가 뜨고 앱이 crash되었다는 메세지와 함께 강제종료되는 일이 계속 발생했다.

로그인 시작도 못해보고 바로 앱이 강제종료되니까 너무 허무해져서 얼른 해결책을 찾아보았다.

 

구글링하면서 이런저런 방법을 시도해보았다.

 

 [ 초기 상황 ] 

package com.example.tripplanner

import android.app.Application
import com.kakao.sdk.common.KakaoSdk

// 전역으로 사용 가능한 context (GlobalApplication)
class App : Application() {

    //singleton 사용
    companion object{
        lateinit var instance: App
            private set
    }

    override fun onCreate() {
        super.onCreate()
        
        instance = this
        KakaoSdk.init(this, "{네이티브_앱_Key}") // 카카오 SDK 초기화
    }
}

 

이런 상황이었는데 분명히 잘못한건 없어보였다. 

KakaoSdk.init(this, "{네이티브_앱_Key}")

Kakao Developers 홈페이지에서도 카카오 SDK 초기화할 때 이 한 줄만 추가해주면 된다고 나와있었다.

 


 

 [ 방법 #1 (실패) ] 

 

그렇게 구글링하다 발견한 방법은 아래와 같았다.

val kAda : KakaoAdapter? = null
if(KakaoSDK.getAdapter() == null){
	KakaoSDK.init(KakaoAdapter)
}

 

위의 KakaoSdk... 한 줄을 이 3줄로 대체하는 것이었다.

결과는 실패였다.

 


 

 [ 방법 #2 (성공) ] 

 

그러다가 한참 뒤에 이 사이트를 발견했다.

https://github.com/react-native-seoul/react-native-kakao-login/issues/91

 

앱 실행 직후 종종 crash 발생 - llegalStateException: Session is not initialized. Call KakaoSDK#init first. · Issue #91

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 앱 실행 후 스플래쉬 화면 ...

github.com

 

나처럼 똑같은 에러를 겪고있던 개발자들이 모여서 해결하고 있는 모습을 볼 수 있었다.

많은 조언들 중에 아래의 말이 눈에 띄었다.

 

"카카오 네이티브 모듈이 초기화 되어 패키지로 등록되기 전에 다른 네이티브 모듈이 쓰레드를 생성하여 resume시키는 문제였습니다. KakaoSDK 에서 안드로이드 액티비티 생명주기 중에, onResume 단계에서 session을 확인하고 설정되어있지 않으면 예외를 발생시킵니다."

 

그래서 나는 초기 상황으로 돌아가서 아래와 같이 코드를 바꿔보았다.

KakaoSdk.init(this, "{네이티브_앱_Key}") // 카카오 SDK 초기화
instance = this

 

onCreate() 안에서 KakaoSdk.init() 과 instance = this 순서를 바꾸어 해결했다.

KakaoSdk를 먼저 초기화해주니 잘 실행되었고 로그인을 진행할 수 있었다.

 

만약 내가 한 방법으로도 잘 되지않으면 위에 말한 사이트로 들어가서 참고해보는게 좋을 것 같다.

 

728x90

BELATED ARTICLES

more