Java->Kotlin 변환 후 Dagger2 XXX_MemberInjector is defined multiple times 에러
Java로 된 BaseActivity 클래스를 Kotlin으로 변환하면서 아래와 같은 빌드 에러가 발생했다.
BaseActivity는 Dagger 사용을 위해
HasAndroidInjector
를 구현 중인 상태이고, 여러 기능 모듈에서 상속해서 사용중이다.
BaseActivity_MemberInjector is defined multiple times
실제로 build 하위를 보면 BaseActivity_MemberInjector 클래스가 하나가 아닌, BaseActivity를 사용하는 각 기능 모듈마다 중복으로 생성되어 있는 것을 확인할 수 있었다.
오류 원인과 해결방법
_MemberInjector
클래스가 annotation processing으로 생성되므로, 그 부분을 위주로 이런 저런 방법을 찾아보던 중.. 아주 어이없는 실수를 발견했다…
Kotlin으로 변환하면서 build.gradle
의 annotationProcessor
를 kapt
로 바꾸지 않은 것이 원인이었다. 아래와 같이 변경하고서 오류가 해결되었다.
Before) build.gradle
// Dagger
annotationProcessor "com.google.dagger:dagger-compiler:${dagger_version}"
annotationProcessor "com.google.dagger:dagger-android-processor:${dagger_version}"
After) build.gradle
// Dagger
kapt "com.google.dagger:dagger-compiler:${dagger_version}"
kapt "com.google.dagger:dagger-android-processor:${dagger_version}"
Comments