
LoveMarker 프로젝트를 개발하며 발생했던 이슈들을 기록합니다!
/Users/haeun/AndroidStudioProjects/LoveMarker/app/build/generated/hilt/component_sources/debug/com/capstone/lovemarker/LoveMarkerApplication_HiltComponents.java:135:
error: [Dagger/MissingBinding] com.capstone.lovemarker.oauth.service.OAuthService cannot be provided without an @Provides-annotated method.
public abstract static class SingletonC implements LoveMarkerApplication_GeneratedInjector,
com.capstone.lovemarker.oauth.service.OAuthService is requested at
[com.capstone.lovemarker.LoveMarkerApplication_HiltComponents.SingletonC] com.capstone.lovemarker.feature.login.di.OAuthEntryPoint.googleAuthService()
⇒ LoveMarkerApplication_HiltComponents 파일 경로를 유심히 보면, app 모듈에서 발생한 오류라는 걸 알 수 있다.
app 모듈에서 data 모듈에 대한 참조 없이 feature 모듈만 참조하고 있어서 발생한 오류였다!!!!
:data:oauth 모듈에서 아래 코드처럼 인터페이스에 대한 구현체를 바인딩 시켜줬는데
package com.capstone.lovemarker.oauth.di
import com.capstone.lovemarker.oauth.service.GoogleAuthService
import com.capstone.lovemarker.oauth.service.OAuthService
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.scopes.ActivityScoped
@Module
@InstallIn(ActivityComponent::class)
abstract class OAuthModule {
@ActivityScoped
@Binds
abstract fun bindGoogleAuthService(
googleAuthService: GoogleAuthService,
): OAuthService
}
이 코드를 app 모듈에서 참조할 수 없기 때문에 빌드 에러가 발생했다.
:data:oauth 모듈에 정의된 OAuthModule 클래스를 app 모듈에서도 참조할 수 있도록, app 모듈의 build.gradle.kts 파일을 다음과 같이 수정했다.
dependencies {
// feature
implementation(projects.feature.login)
// ...
}
dependencies {
// feature
implementation(projects.feature.login)
// data
implementation(projects.data.oauth)
// ...
}
전에 앱 모듈의 액티비티에서 로그인 화면을 실행시키려고 임시로 :feature:login 모듈 추가했었는데, 그때 관련 코드를 지우지 않고 남겨둔 게 영향을 미쳤다...ㅠㅠ
어제 밤부터 오늘 낮까지 삽질하다가.. 해결 완료!!