kotlin.UninitializedPropertyAccessException: lateinit property hosts has not been initialized

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

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


카카오 로그인 api 안드로이드 용 개발 문서 참조 후.
로그인 동작을 확인하려던 중 다음과 같은 시스템 에러가 발생했습니다.

개발 문서 대로 빠짐없이 파일 적용해 주었고요.


발생한 시스템 에러입니다.

  kotlin.UninitializedPropertyAccessException: lateinit property hosts has not been initialized
      at com.kakao.sdk.common.KakaoSdk.getHosts(KakaoSdk.kt:43)
      at com.kakao.sdk.auth.network.ApiFactoryKt$kapiWithOAuth$2.invoke(ApiFactory.kt:30)
      at com.kakao.sdk.auth.network.ApiFactoryKt$kapiWithOAuth$2.invoke(ApiFactory.kt:28)
      at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
      at com.kakao.sdk.auth.network.ApiFactoryKt.getKapiWithOAuth(ApiFactory.kt:28)
      at com.kakao.sdk.user.UserApiClient.<init>(UserApiClient.kt:46)
      at com.kakao.sdk.user.UserApiClient$Companion$instance$2.invoke(UserApiClient.kt:443)
      at com.kakao.sdk.user.UserApiClient$Companion$instance$2.invoke(UserApiClient.kt:443)
      at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
      at com.kakao.sdk.user.UserApiClient$Companion.getInstance(UserApiClient.kt:443)
      at com.kakao.sdk.user.UserApiClient.getInstance(Unknown Source:2)
      at kr.co.avad.marineinfo.WebAppInterface.kakaoLogin(WebAppInterface.java:152)
      at android.os.MessageQueue.nativePollOnce(Native Method)


사용한 코드

※ 참고로 sdk init 코드상에 적용된 상태입니다.
‘UserApiClient.instance.isKakaoTalkLoginAvailable(context)’ ← 이 부분에서 에러 로그가 찍힘.

// 로그인 조합 예제

// 카카오계정으로 로그인 공통 callback 구성
// 카카오톡으로 로그인 할 수 없어 카카오계정으로 로그인할 경우 사용됨
val callback: (OAuthToken?, Throwable?) -> Unit = { token, error ->
    if (error != null) {
        Log.e(TAG, "카카오계정으로 로그인 실패", error)
    } else if (token != null) {
        Log.i(TAG, "카카오계정으로 로그인 성공 ${token.accessToken}")
    }
}

// 카카오톡이 설치되어 있으면 카카오톡으로 로그인, 아니면 카카오계정으로 로그인
if (UserApiClient.instance.isKakaoTalkLoginAvailable(context)) {
    UserApiClient.instance.loginWithKakaoTalk(context) { token, error ->
        if (error != null) {
            Log.e(TAG, "카카오톡으로 로그인 실패", error)

            // 사용자가 카카오톡 설치 후 디바이스 권한 요청 화면에서 로그인을 취소한 경우,
            // 의도적인 로그인 취소로 보고 카카오계정으로 로그인 시도 없이 로그인 취소로 처리 (예: 뒤로 가기)
            if (error is ClientError && error.reason == ClientErrorCause.Cancelled) {
                return@loginWithKakaoTalk
            }

            // 카카오톡에 연결된 카카오계정이 없는 경우, 카카오계정으로 로그인 시도
            UserApiClient.instance.loginWithKakaoAccount(context, callback = callback)
        } else if (token != null) {
            Log.i(TAG, "카카오톡으로 로그인 성공 ${token.accessToken}")
        }
    }
} else {
    UserApiClient.instance.loginWithKakaoAccount(context, callback = callback)
}

내용 확인해주시고, 답변 부탁드려요~

추가로 sdk 버전은 이겁니다.

implementation "com.kakao.sdk:v2-all:2.20.1" // 전체 모듈 설치, 2.11.0 버전부터 지원
	implementation "com.kakao.sdk:v2-user:2.20.1" // 카카오 로그인 API 모듈
	implementation "com.kakao.sdk:v2-cert:2.20.1" // 카카오톡 인증 서비스 API 모듈

안녕하세요.

Kakao SDK 초기화 코드 첨부 부탁드립니다.
해당 코드가 포함된 클래스 내용 전체를 첨부 부탁드립니다.

KakaoSdk.init(this, "{NATIVE_APP_KEY}")