使用Versions Library配置Dagger Hilt+KSP时遇构建错误
解决Dagger Hilt配置KSP时"No providers found in processor classpath"构建错误
问题重现
配置Dagger Hilt时通过KSP引入编译器依赖,项目同步正常,但执行构建时报错:
> Task :app:kspDebugKotlin FAILED e: [ksp] No providers found in processor classpath. e: Error occurred in KSP, check log for detail
错误原因
- 未配置Hilt Android Gradle插件:Hilt需要通过插件生成核心代码,缺少插件会导致KSP无法识别处理器。
- KSP依赖错误:Hilt 2.38+版本中,KSP对应的处理器依赖已从
hilt-compiler改为hilt-android-compiler,原依赖仅适用于kapt/Java环境。
修复步骤
1. 更新libs.versions.toml配置
添加Hilt插件并替换KSP处理器依赖:
[versions] agp = "8.3.1" kotlin = "1.9.10" ksp = "1.9.10-1.0.13" hiltAndroid = "2.42" hiltNavigationCompose = "1.0.0" [libraries] hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hiltAndroid" } # 替换原hilt-compiler为KSP专用依赖 hilt-android-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hiltAndroid" } hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hiltNavigationCompose" } [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" } jetbrainsKotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } # 添加Hilt Android插件 hilt-android = { id = "com.google.dagger.hilt.android", version.ref = "hiltAndroid" }
2. 根项目build.gradle引入Hilt插件
plugins { alias(libs.plugins.androidApplication) apply false alias(libs.plugins.jetbrainsKotlinAndroid) apply false alias(libs.plugins.ksp) apply false // 新增Hilt插件引用 alias(libs.plugins.hilt-android) apply false }
3. 模块app/build.gradle应用插件并修正依赖
plugins { alias(libs.plugins.androidApplication) alias(libs.plugins.jetbrainsKotlinAndroid) alias(libs.plugins.ksp) // 应用Hilt插件 alias(libs.plugins.hilt-android) } dependencies { implementation(libs.hilt.android) implementation(libs.hilt.navigation.compose) // 替换原ksp(libs.hilt.compiler) ksp(libs.hilt.android-compiler) }
4. 确保Application类添加Hilt注解
在自定义Application类上添加@HiltAndroidApp注解,触发Hilt代码生成:
@HiltAndroidApp class MyApp : Application() { // 业务代码 }
验证
重新执行构建命令,错误应消失。若仍有问题,可尝试清理项目缓存(File > Invalidate Caches...)后重新构建。
内容的提问来源于stack exchange,提问作者Carlos Rosiles
相关产品推荐
相关产品推荐

