Проблема с зависимостью рукоятки: ожидалось, что @AndroidEntryPoint будет иметь значение. Вы забыли применить плагин GraAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проблема с зависимостью рукоятки: ожидалось, что @AndroidEntryPoint будет иметь значение. Вы забыли применить плагин Gra

Сообщение Anonymous »

Я уже просмотрел другие сообщения здесь, но ответ не помог.
Я пытаюсь использовать Hilt с Room и KSP
Проблема началась, когда я сменил

Код: Выделить всё

val viewModel: LoginViewModel = viewModel()
в

Код: Выделить всё

val viewModel: LoginViewModel = hiltViewModel()
Экран входа в систему, содержащий @Composable и не имеющий конкретной аннотации рукоятки
build.gradle.kts (:app)
р>

Код: Выделить всё

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" }
А также:
  • Существует только одно действие, и оно имеет аннотацию @AndroidEntryPoint.
    li>
    Приложение имеет @HiltAndroidApp
  • ViewModel имеет конструктор @HiltViewModel и @Inject
Насколько далеко Насколько я могу судить, проблема в том, что Hilt отсутствует в блоке плагинов на уровне приложения. Однако, когда он включен, я не могу скомпилировать.
Возможно, определение модели представления внутри LoginScreen - плохая идея (я новичок в разработке Android). Я хотел этого для

Код: Выделить всё

// Login Button
Button(
onClick = { viewModel.validateLogin(username, password) },
modifier = Modifier.fillMaxWidth()
) {}
Но, возможно, лучше заняться этим в другом месте.

Подробнее здесь: https://stackoverflow.com/questions/793 ... d-you-forg
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»