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

Hilt依赖问题:@AndroidEntryPoint需配置Gradle插件,启用后编译失败

问题:Hilt+KSP+Compose集成编译失败及ViewModel使用疑问

问题背景

我查过相关帖子但没找到有效解决方案。当前项目尝试结合Hilt、Room和KSP使用,把代码中的val viewModel: LoginViewModel = viewModel()改为val viewModel: LoginViewModel = hiltViewModel()后出现问题。

  • 包含这段代码的LoginScreen是带有@Composable注解的Composable函数,没有添加任何Hilt相关注解。
  • 项目中唯一的Activity已添加@AndroidEntryPoint注解;Application类已添加@HiltAndroidApp注解;ViewModel类已添加@HiltViewModel注解和@Inject构造方法。

配置信息

app模块build.gradle.kts

plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    alias(libs.plugins.kotlin.compose)
    alias(libs.plugins.ksp)
//    alias(libs.plugins.hilt)
}

dependencies {
    implementation(libs.hilt.navigation)
    implementation(libs.hilt.android)
    implementation(libs.hilt.compiler)
    ksp(libs.hilt.compiler)
//    ksp(libs.dagger.compiler)
//    implementation(libs.hilt.gradle)
//    implementation(libs.dagger.compiler)

启用Hilt插件后的编译报错

Unable to load class 'com.google.devtools.ksp.gradle.KspTaskJvm'
com.google.devtools.ksp.gradle.KspTaskJvm
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

根目录build.gradle.kts

plugins {
    alias(libs.plugins.android.application) apply false
    alias(libs.plugins.kotlin.android) apply false
    alias(libs.plugins.kotlin.compose) apply false
    alias(libs.plugins.hilt) apply false
}

libs.versions.toml

[versions]
kotlin = "2.1.0"
hilt = "2.53.1"
daggerCompiler = "2.53.1"
hiltNavigation = "1.2.0"
ksp = "2.1.0-1.0.29"

[libraries]
dagger-compiler = { module = "com.google.dagger:dagger-compiler", version.ref = "daggerCompiler" }
hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" }
#   hilt-gradle = { group = "com.google.dagger", name = "hilt-android-gradle-plugin", version.ref = "hilt"}
hilt-navigation = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "hiltNavigation" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }

疑问

我判断问题出在app模块的plugins块中缺少Hilt插件,但启用该插件后会导致编译失败。另外我是Android开发新手,不确定在LoginScreen中定义ViewModel是否合适,原本是为了实现如下逻辑:

// Login Button
Button(
    onClick = { viewModel.validateLogin(username, password) },
    modifier = Modifier.fillMaxWidth()
) {}

或许这种逻辑应该放在其他地方?

内容的提问来源于stack exchange,提问作者Ryan C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:09:55