多模块Android项目kapt配置未找到问题求助
问题原因
报错的核心是kapt插件必须依赖Android基础插件(com.android.application或com.android.library)才能生成kapt配置。你的Hilt插件虽然手动应用了org.jetbrains.kotlin.kapt,但如果目标模块还没加载Android基础插件,kapt插件无法创建对应配置,就会抛出找不到kapt的错误。
Now In Android示例之所以没问题,是因为它的约定插件有明确的依赖层级:先通过AndroidLibraryConventionPlugin或AndroidApplicationConventionPlugin给模块加载Android基础插件,再在此基础上应用Hilt插件,确保kapt插件在Android插件之后加载。
解决方案
修改AndroidHiltConventionPlugin代码,让它仅在模块加载完Android基础插件后,再执行Hilt和kapt的配置逻辑:
import ... class AndroidHiltConventionPlugin : Plugin<Project> { override fun apply(target: Project) { with(target) { // 监听Android应用插件加载完成,再配置Hilt pluginManager.withPlugin("com.android.application") { configureHilt() } // 监听Android库插件加载完成,再配置Hilt pluginManager.withPlugin("com.android.library") { configureHilt() } } } private fun Project.configureHilt() { pluginManager.apply("dagger.hilt.android.plugin") pluginManager.apply("org.jetbrains.kotlin.kapt") val libs = extensions.getByType<VersionCatalogsExtension>().named("libs") dependencies { "implementation"(libs.findLibrary("hilt.android").get()) "kapt"(libs.findLibrary("hilt.compiler").get()) "kaptAndroidTest"(libs.findLibrary("hilt.compiler").get()) } } }
同时,确保模块在应用todo.android.hilt插件前,已经加载了Android基础插件,比如在模块的build.gradle.kts中按顺序声明:
plugins { id("com.android.library") id("todo.android.hilt") }
不需要在项目级Gradle文件添加kapt相关配置,kapt是模块级插件,通过约定插件按需加载即可。
内容的提问来源于stack exchange,提问作者woxiangqiu
相关产品推荐
相关产品推荐

