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
相关产品推荐
相关产品推荐

