🚫🚫

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만 사용한다면 문제가 없다고 하네요.

 

해당 라이브러리를 제거 후 정상 빌드 성공했습니다!
🧑‍💻🧑‍💻

 

 


여기까지 저의 긴 글을 읽어주셔서 감사합니다.

제가 습관적으로 코딩을 하는 그날까지 습관적으로 코딩을 하기 위해 글 작성을 꾸준하게 하겠습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기