构建失败:':app:hiltAggregateDepsDebug'任务执行异常求助
解决Dagger2与Hilt混用时的构建问题
1. 修复JavaPoet版本冲突
java.lang.NoSuchMethodError的核心原因是Hilt与Dagger2依赖的JavaPoet版本不一致,导致hiltAggregateDeps任务执行时找不到目标方法。
在项目根目录的build.gradle.kts中强制统一JavaPoet版本:
subprojects { configurations.all { resolutionStrategy { // 选择与当前Hilt版本兼容的JavaPoet稳定版,比如Hilt 2.44.1对应1.13.0,可通过依赖树确认具体版本 force("com.squareup:javapoet:1.13.0") } } }
2. 隔离Dagger2与Hilt的处理器配置
功能模块仅保留Dagger2依赖,排除Hilt处理器;主模块(app)仅保留Hilt配置,排除Dagger2处理器,避免二者冲突。
修改feature.gradle.kts:
plugins { id("com.android.library") kotlin("android") } dependencies { implementation("com.google.dagger:dagger:2.44.2") annotationProcessor("com.google.dagger:dagger-compiler:2.44.2") // 排除混入的Hilt处理器 configurations.annotationProcessor { exclude(group = "com.google.dagger", module = "hilt-compiler") } }
主模块build.gradle.kts调整:
plugins { id("com.android.application") kotlin("android") id("dagger.hilt.android.plugin") } hilt { enableAggregatingTask = true } dependencies { implementation("com.google.dagger:hilt-android:2.44.1") kapt("com.google.dagger:hilt-compiler:2.44.1") // 排除Dagger2处理器避免冲突 configurations.kapt { exclude(group = "com.google.dagger", module = "dagger-compiler") } }
3. 消除处理器选项未识别警告
Dagger2会识别到Hilt的处理器选项引发警告,在功能模块的build.gradle.kts中添加过滤配置:
android { defaultConfig { javaCompileOptions { annotationProcessorOptions { arguments["dagger.ignoreUnknownOptions"] = "true" } } } }
4. 清理缓存重新构建
执行命令清理旧编译产物,避免缓存干扰:
./gradlew clean ./gradlew assembleDebug
内容的提问来源于stack exchange,提问作者lukemilewalker
相关产品推荐
相关产品推荐

