* Exception is:
org.gradle.api.CircularReferenceException: Circular dependency between the following tasks:
:app:processDebugResources
\--- :presentation:processDebugResources
\--- :app:processDebugResources (*)
클린 아키텍처를 적용한 멀티모듈 프로젝트에서 발생한 에러 메시지이다.
계층 간 분리를 위해 모듈을 나눈 뒤 고수준에서 저수준으로 의존성을 추가해주었고, 안드로이드 진입점과 의존성 주입을 위해 app 모듈이 data/domain/presentation 계층을 모두 참조하도록 설정했다.
하지만 프로젝트 설정 과정에서 presentation 계층의 gradle 파일에도 app 모듈에 대한 의존성이 들어갔고,
서로 참조를 했기 때문에 리소스 디버깅 중에 순환 참조로 인해 이와 같은 문제가 발생한 것이다.
가장 간단하게 해결이 가능한 방법은 두 계층 중 한 곳의 참조를 해제해주는 방법이다.
하지만 app 계층에 DI 관련 클래스들이 존재하며, presentation 계층에서 해당 클래스를 참조해야하기 때문에
둘 사이에 중간 계층을 하나 만들어 두 계층이 각각 참조하도록 해서 해결하는 방법이 더 적합할 것 같다.
멀티모듈 프로젝트를 제대로 진행해보는건 처음인데, 아직까지는 실질적인 개발보다 개발환경 설정에 들어가는 노력이 훨씬 커서 너무 힘들다..ㅎㅎ
그래도 이번 프로젝트를 마무리한 뒤에 들어갈 바로 다음 프로젝트는 초기 설정에 드는 비용이 좀 낮지 않을까 하는 생각을 하며 트러블 슈팅 과정을 기록한다.
'개발 > 트러블슈팅' 카테고리의 다른 글
[안드로이드] is not abstract and does not implement abstract member public abstract fun getActionId() 오류 (0) | 2023.04.17 |
---|---|
[안드로이드] Could not resolve com.android.tools.build:gradle:7.4.2 오류 (0) | 2023.04.13 |
[안드로이드] by viewModels() 종속성 추가 (0) | 2023.04.12 |
[안드로이드] ViewModelProvider gradle 오류 (0) | 2022.09.29 |
[안드로이드] INSTALL_FAILED_DOWNGRADE_VERSION 해결 방법 (0) | 2022.08.09 |