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

如何正确实现Hilt?解决@AndroidEntryPoint与插件重复请求错误

Hilt集成两类错误的原因与解决方法

错误1:[ksp] [Hilt] Expected @AndroidEntryPoint to have a value. Did you forget to apply the Gradle Plugin? (com.google.dagger.hilt.android)

原因

Hilt的注解处理器依赖Gradle插件生成必要的辅助代码,当前App级build.gradle.kts中未启用Hilt插件,导致@AndroidEntryPoint注解无法被正确解析,注解处理器找不到插件生成的配套代码,从而抛出该错误。另外Compose项目中kotlin-android插件是kotlin-compose的依赖,当前也被注释掉,会间接影响插件正常工作。

解决方法

在App级build.gradle.kts的plugins块中启用Hilt插件,同时启用kotlin-android插件:

  • 取消alias(libs.plugins.kotlin.android)的注释
  • 取消alias(libs.plugins.hilt)的注释

错误2:Plugin with id 'com.google.dagger.hilt.android' was already requested at line 2

原因

该错误是重复请求同一插件导致的:要么是在App级配置中同时通过别名和直接插件ID引用了Hilt插件,要么是项目其他模块重复声明了该插件。结合你的配置来看,大概率是尝试手动添加com.google.dagger.hilt.android插件ID时,和已通过alias(libs.plugins.hilt)声明的插件冲突。

解决方法

保持插件引用方式一致,统一使用alias(libs.plugins.hilt)的方式引用Hilt插件,避免同时用别名和直接ID声明同一插件。


修改后的完整配置文件

App级build.gradle.kts

import com.android.aaptcompiler.compileResource

plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android) // 启用kotlin-android,为kotlin-compose提供依赖
    alias(libs.plugins.kotlin.compose)
    alias(libs.plugins.ksp)
    alias(libs.plugins.hilt) // 启用Hilt插件
}

android {
    namespace = "com.slatertechnologies.changebackgroundcolor"
    compileSdk {
        version = release(36) {
            minorApiLevel = 1
        }
    }

    defaultConfig {
        applicationId = "com.slatertechnologies.changebackgroundcolor"
        minSdk = 24
        targetSdk = 36
        versionCode = 1
        versionName = "1.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_11
        targetCompatibility = JavaVersion.VERSION_11
    }
    buildFeatures {
        compose = true
    }
}

dependencies {

    implementation(platform(libs.androidx.compose.bom))
    implementation(libs.androidx.activity.compose)
    implementation(libs.androidx.compose.material3)
    implementation(libs.androidx.compose.ui)
    implementation(libs.androidx.compose.ui.graphics)
    implementation(libs.androidx.compose.ui.tooling.preview)
    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.lifecycle.runtime.ktx)

    testImplementation(libs.junit)
    androidTestImplementation(platform(libs.androidx.compose.bom))
    androidTestImplementation(libs.androidx.compose.ui.test.junit4)
    androidTestImplementation(libs.androidx.espresso.core)
    androidTestImplementation(libs.androidx.junit)

    debugImplementation(libs.androidx.compose.ui.test.manifest)
    debugImplementation(libs.androidx.compose.ui.tooling)

    // Room
    ksp(libs.androidx.room.compiler)
    implementation(libs.androidx.room.runtime)

    // Hilt
    ksp(libs.hilt.compiler)
    implementation(libs.hilt.android)
}

额外配置提醒

别忘了给你的Application类添加@HiltAndroidApp注解,这是Hilt的核心入口:

@HiltAndroidApp
class MyApplication : Application() {
    // 自定义逻辑
}

同时在AndroidManifest.xml中指定该Application类。


内容的提问来源于stack exchange,提问作者Benedikt Schlüter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 23:37:28