🚫🚫
ComponentProcessingStep was unable to process 'packagename.SingletonC' because
'dagger.hilt.android.internal.lifecycle.DefaultActivityViewModelFactory' could not be resolved.
두둥...
🤦♂️🤦♂️🤦♂️
요즘 Android DI에 대하여 공부중이라
Hilt를 적용시켜 토이 프로젝트를 진행하고 있었습니다.
하지만 위와 같은 에러 메시지가 나와 빌드조차 하지 못하고 있었습니다.
( Koin은 RunTime시 주입하여 에러메시지가 나오지만
Hilt는 CompileTime에서 주입하여 컴파일 에러 노출됩니다. )
Hilt 관련 작업은 간단하게
@HiltAndroidApp
class BaseApplication: Application() {
...
}
@AndroidEntryPoint
class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>() {
override val layoutId: Int = R.layout.activity_main
override val viewModel: MainViewModel by viewModels()
...
}
@HiltViewModel
class MainViewModel @Inject constructor(
private val weatherRepository: WeatherRepository
) : BaseViewModel() {
...
}
위와 같은 작업뿐 특별하 코드는 없었습니다.
하지만 계속해서 정상 빌드가 안되고
계속 같은 에러 메시지만 노출되고 있었습니다.
ComponentProcessingStep was unable to process 'packagename.SingletonC' because
'dagger.hilt.android.internal.lifecycle.DefaultActivityViewModelFactory' could not be resolved.
그러던 어느 날
평소처럼 Stack Overflow를 뒤지고 다니던 중!
귀인을 만났습니다!!!
Thanks!!! 'acmpo6ou'
🙏🙏
원인은 바로
implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"
build.gradle(:app)
dependencies {
...
// hilt
implementation 'com.google.dagger:hilt-android:2.44'
kapt 'com.google.dagger:hilt-compiler:2.44'
kapt 'com.google.dagger:hilt-android-compiler:2.44'
// implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"
...
}
Hilt 2.31에서 ViewModel 주입 방법이 바뀌었다고 합니다.
이제는 androidx.hilt:hilt-lifecycle-viewmodel 라이브러리 없이도
@HiltViewModel만 사용한다면 문제가 없다고 하네요.
해당 라이브러리를 제거 후 정상 빌드 성공했습니다!
🧑💻🧑💻
여기까지 저의 긴 글을 읽어주셔서 감사합니다.
제가 습관적으로 코딩을 하는 그날까지 습관적으로 코딩을 하기 위해 글 작성을 꾸준하게 하겠습니다.
'Android > DI' 카테고리의 다른 글
[Kotlin] Koin은 DI가 아니다?! (0) | 2023.01.14 |
---|---|
Android Hilt 적용하기2 (@Binds, @Provides, @ApplicationContext) (0) | 2022.12.21 |
Android Hilt 적용하기1 - (Koin vs Hilt) (2) | 2022.12.10 |
[Kotlin] Android Koin을 활용하여 DI 적용 (경량화 DI Koin) (0) | 2022.11.25 |
Android DI(Dependency Injection) 의존성 주입이 뭐지? (0) | 2022.11.23 |
최근댓글