Ich versuche, Hilt mit Room und KSP zu verwenden
Das Problem trat auf, als ich
geändert habe
Code: Select all
val viewModel: LoginViewModel = viewModel()
Code: Select all
val viewModel: LoginViewModel = hiltViewModel()
build.gradle.kts (:app)
Code: Select all
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)
Code: Select all
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.)
Code: Select all
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
}
Code: Select all
[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" }
- Es gibt nur eine Aktivität und sie hat die Annotation @AndroidEntryPoint.
Anwendung hat @HiltAndroidApp - ViewModel hat @HiltViewModel und @Inject Konstruktor
Es ist möglich, dass die Definition des viewModel innerhalb von LoginScreen eine schlechte Idee ist (ich bin neu bei Android Dev). Ich wollte es für
Code: Select all
// Login Button
Button(
onClick = { viewModel.validateLogin(username, password) },
modifier = Modifier.fillMaxWidth()
) {}