error: [Dagger/MissingBinding] @dagger.hilt.android.qualifiers.ActivityContext android.content.Context cannot be provided without an @Provides-annotated method. public abstract static class SingletonC implements ArtOnApplication_GeneratedInjector,

2022. 11. 5. 23:18·Android

Hilt를 사용하면서 만난 오류이다.

 

error: [Dagger/MissingBinding] @dagger.hilt.android.qualifiers.ActivityContext android.content.Context cannot be provided without an @Provides-annotated method.  public abstract static class SingletonC implements ArtOnApplication_GeneratedInjector,

 

에러가 난 코드는 아래와 같다.

 

class KakaoAuthService @Inject constructor(
    @ActivityContext private val context: Context
) {
    fun startKakaoLogin(kakaoLoginCallback: (OAuthToken?, Throwable?) -> Unit) {
        val kakaoLoginState = if (UserApiClient.instance.isKakaoTalkLoginAvailable(context)) {
            KAKAO_TALK_LOGIN
        } else {
            KAKAO_ACCOUNT_LOGIN
        }

        when (kakaoLoginState) {
            KAKAO_TALK_LOGIN -> UserApiClient.instance.loginWithKakaoTalk(
                context,
                callback = kakaoLoginCallback
            )
            KAKAO_ACCOUNT_LOGIN -> UserApiClient.instance.loginWithKakaoAccount(
                context,
                callback = kakaoLoginCallback
            )
        }
    }

    companion object {
        const val KAKAO_TALK_LOGIN = 0
        const val KAKAO_ACCOUNT_LOGIN = 1
    }
}

 

ActivityContext를 사용하는 부분에서 오류가 난 것인데, ActivityContext의 경우 @Provide 를이용해서 의존성을 주입하라는 것 같다. Stack Overflow를 통해 비슷한 오류를 찾아봤는데

 

@HiltViewModelViewModel이 구성 변경의 활동보다 오래 지속되기 때문에 누출이 발생할 수 있으므로 활동 컨텍스트(또는 활동 자체)를 삽입할 수 없습니다. (구글 번역기..)

 

대략 ActivityContext의 생명주기 보다, ViewModel의 생명주기가 더 길기 때문에 의존성 주입이 불가능하다.. 라고 하는 것 같다.

 

나의 경우 ActivityContext가 아닌, ApplicationContext를 이용해도 상관없어 보여서 ApplicationContext을 주입하도록 코드를 수정해주니 정상적으로 빌드되었다.

 

class KakaoAuthService @Inject constructor(
    @ApplicationContext private val context: Context
)

다른 좋은 방법이 있다면 공유 부탁드립니다..😜

 

'Android' 카테고리의 다른 글

Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView  (0) 2022.11.13
android studio에서 실행한 앱이 설치되지 않을 때  (0) 2022.11.06
Android WebView 테스트 샘플 앱 개발 - 2  (0) 2022.10.22
Android WebView 샘플 앱 개발 - 1  (0) 2022.10.22
Android에서 Firebase Cloud Messaging 테스트 앱 개발 - 1  (0) 2022.10.19
'Android' 카테고리의 다른 글
  • Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView
  • android studio에서 실행한 앱이 설치되지 않을 때
  • Android WebView 테스트 샘플 앱 개발 - 2
  • Android WebView 샘플 앱 개발 - 1
HWBB
HWBB
흥미주도개발자
  • HWBB
    코딩공부방
    HWBB
  • 전체
    오늘
    어제
    • 분류 전체보기 (161)
      • 알고리즘 (61)
      • Android (27)
      • Kotlin (0)
      • Java (2)
      • Design Pattern (2)
      • React Native (1)
      • Python (0)
      • TIL (20)
      • Unity (0)
      • React (2)
      • AWS (0)
      • Git (11)
      • MFC (1)
      • Spring (4)
      • Computer Science (4)
      • Vue (4)
      • Infra (4)
      • 박현우 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 승윤이
  • 공지사항

  • 인기 글

  • 태그

    github
    coding
    코딩테스트
    알고리즘
    깃허브
    C++
    백준
    programmers
    baekjoon
    GIT
    Android
    자바
    android studio
    안드로이드
    코틀린
    안드로이드 스튜디오
    프로그래머스
    algorithm
    Java
    Kotlin
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
HWBB
error: [Dagger/MissingBinding] @dagger.hilt.android.qualifiers.ActivityContext android.content.Context cannot be provided without an @Provides-annotated method. public abstract static class SingletonC implements ArtOnApplication_GeneratedInjector,
상단으로

티스토리툴바