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

多模块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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:33:01