방대한 문서보다 동작하는 소프트웨어

개발

[안드로이드] hiltAggregateDepsDebug 에러

꽃게장세트 2024. 2. 14. 06:39

에러

FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:hiltAggregateDepsDebug'. > A failure occurred while executing dagger.hilt.android.plugin.task.AggregateDepsTask$WorkerAction > 'java.lang.String com.squareup.javapoet.ClassName.canonicalName()'
...
..

 

 

해결책

// 모듈 수준의 build.gradle
hilt {
    enableAggregatingTask = false
}

 

원인

최신버전(2.50)의 dagger-compiler 는 내부에서, square 사가 만든 JavaPoet 을 사용합니다. 좀 더 구체적으로는 Hilt를 사용하는 클래스 경로를 집계(Aggregate)하는 용도로 JavaPoet 를 사용하지만, java.lang.String com.squareup.javapoet.ClassName.canonicalName() 메서드를 찾지 못하는 것이 에러의 원인 입니다.

 

Hilt 는 클래스 경로를 집계하는 기능을 활성/비활성 할 수 있도록 옵션(enableAggregatingTask)을 제공합니다. 이 부분을 비활성화 화면 에러가 나오지 않게 할 수 있습니다. 정확히는 JavaPoet 를 사용하는 Dagger 의 Aggregating Task기능을 사용하지 않는 것입니다.

물론, Hilt의 Aggregating Task 기능을 사용하면 증분 컴파일 시간이 줄어드는 등의 이점이 있다고 합니다.

 

FYI

  • Dagger 문서의 문서를 보면, Aggregating Task 역할을 알 수 있습니다.
  • JavaPoet가 dagger 에서 사용하는 근거는, mvn repository 의 usage 에서 확인 가능합니다.(소스 코드를 추적하지 않아도)
  • JavaPoet는 Java 소스 파일을 생성하기 위한 API입니다.

 

Reference

 

맞는 해석인가... @.@