Hilt를 이용해 개발하던 중 다음과 같은 오류가 발생했습니다.
public abstract static class singletonc implements ...
cannot be provided without an @Provides-annotated method.
특히 단일 모듈에서는 문제가 없었지만 기존과 다른 URL 주소와 네트워크 통신을 하기 위해 @qulifier 어노테이션을 이용해 멀티모듈로 변경하는 과정에서 버그가 발생했습니다.
의존성을 주입하는 과정에서 Hilt는 동일한 타입의 객체가 여러개 반환되는 경우에 각각의 반환 타입을 어느 객체에 주입할지 명시해 주어야 합니다.
위 이미지에서 Retrofit 객체가 반환되는 메소드가 두 개이기 때문에 @Qulifier 어노테이션을 사용해 각각의 Retrofit 객체에 어노테이션 클래스로 이름을 붙여줍니다.
그리고 Retrofit을 반환하는 provideRetrofit()과 provideAddressRetrofit() 메소드에 지정했던 어노테이션 클래스명을 명시하고 Retrofit 객체를 주입받는 provideMainRetrofitService()와 provideAddressRetrofitService()에서 어디서 반환되는 Retrofit 객체를 주입할지 생성자 앞에 추가합니다.
그치만 해당 코드를 실행하면 에러가 발생합니다.
... cannot be provided without an @Provides-annotated method.
... public abstract static class SingletonC implements MyApplication_GeneratedInjector
몇 시간을 삽질했지만 명확한 이유는 찾지 못했습니다.
제가 찾은 해결 방법은 Retrofit객체를 주입받는 메소드에도 @Qulifier로 지정했던 어노테이션 클래스명을 추가해 주는 것이었습니다.
힐트는 어려워요오..
728x90
반응형
'Android' 카테고리의 다른 글
[안드로이드] BottomNavigationBar 메뉴 Item의 Ripple 효과 제거하기(Material 3) (0) | 2023.10.24 |
---|---|
[안드로이드] Material CalendarView - 캘린더 제대로 커스텀하기(with. Range, Select, OtherDays, 주말 설정) (5) | 2023.08.24 |
[안드로이드] 커스텀 다이어로그(Custom Dialog) 모서리 흰 배경이 보이는 현상 해결방법, 좌우 여백 조절 방법 (1) | 2023.07.28 |
[안드로이드] 이미지(ImageView) 테두리의 모서리 둥글게 만들기 (0) | 2023.07.21 |
[안드로이드] Databinding으로 View의 visibility 설정하기 (0) | 2023.07.18 |