You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移除Hilt后Gradle仍执行kapt任务,如何排查原因?

排查移除Hilt后kapt任务仍执行的问题

以下是逐步排查的具体方法:

1. 确认kapt插件与Hilt相关配置完全移除

  • 检查所有build.gradle.kts文件(包括根目录和app模块):
    • 确保id("kotlin-kapt")插件已从plugins块中删除——只要该插件存在,Gradle就会自动生成kapt系列任务
    • 确认id("com.google.dagger.hilt.android")插件已删除
    • 清理dependencies块中所有Hilt相关依赖:包括androidx.hilt:hilt-navigation-compose、com.google.dagger:hilt-android以及对应的kapt依赖
  • 检查libs.versions.toml文件(若使用版本目录管理):删除所有与Hilt、kapt相关的alias或版本声明
  • 检查根目录build.gradle.kts的buildscript块:确保已移除Hilt Gradle插件的classpath配置(如com.google.dagger:hilt-android-gradle-plugin)

2. 排查第三方插件是否触发kapt

你当前使用了io.objectbox插件,部分第三方库会自动引入kapt依赖或触发kapt任务:

  • 执行./gradlew app:dependencies,在输出中搜索kapt关键词,查看是否有ObjectBox或其他依赖间接引入了kapt相关配置
  • 查阅ObjectBox官方文档,确认其是否依赖kapt,是否需要额外配置关闭kapt关联

3. 分析Gradle任务依赖链

  • 执行./gradlew app:tasks --all,找到kapt系列任务(如kaptGenerateStubsDebugKotlin),查看其依赖的前置任务,确认是哪个任务或插件触发了它
  • 执行./gradlew app:kaptGenerateStubsDebugKotlin --info,查看详细日志,日志中会明确显示任务的触发来源,帮助定位根源

4. 针对编译器参数变化的排查

Build Analyzer提示compilerOptions.freeCompilerArgs变化导致任务重复执行:

  • 执行./gradlew app:kaptGenerateStubsDebugKotlin --up-to-date,对比两次构建的参数差异
  • 执行./gradlew app:properties,查看compilerOptions.freeCompilerArgs的具体值,确认是否存在残留的kapt相关参数

5. 深层清理缓存

常规清理无效时,尝试:

  • 删除用户目录下的Gradle缓存:rm -rf ~/.gradle/caches(Ubuntu系统)
  • 执行./gradlew cleanBuildCache清理Gradle构建缓存

6. 对比正常项目配置

将当前项目的build.gradle.kts、gradle.properties等配置文件,与新建的无kapt问题的项目逐行对比,找出隐藏的配置差异

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 10:26:01