Я новичок в Jetpack Compose и Hilt, у меня возникли проблемы при создании приложения после реализации модуля класса.
Не удалось выполнить задачу «:app:kaptDebugKotlin».
Произошел сбой при выполнении org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction.
Я использую версию каталога, это файл:
[versions]
agp = "8.4.1"
kotlin = "1.9.0"
coreKtx = "1.13.1"
junit = "4.13.2"
junitVersion = "1.2.1"
espressoCore = "3.6.1"
lifecycleRuntimeKtx = "2.8.2"
activityCompose = "1.9.0"
composeBom = "2023.08.00"
composeMaterial = "1.6.0"
lifecyclevm = "2.7.0"
navcompose = "2.7.6"
kotlinCoroutines = "1.6.4"
hiltversion = "2.44"
hiltComposeNav = "1.0.0"
hiltWork = "1.0.0"
retrofitVer = "2.9.0"
okhttpVer = "4.9.2"
rerofitGsonCv = "2.4.0"
gsonVer = "2.8.5"
coilVer = "2.4.0"
materialIcon = "1.5.4"
flowlVer = "0.28.0"
flexibleBs = "0.1.3"
[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
androidx-ui = { group = "androidx.compose.ui", name = "ui" }
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
androidx-compose-material = { module = "androidx.compose.material:material", version.ref = "composeMaterial"}
lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "lifecyclevm"}
navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navcompose"}
kotlin-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-play-services", version.ref = "kotlinCoroutines" }
hilt = { module = "com.google.dagger:hilt-android", version.ref = "hiltversion"}
hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hiltversion"}
hilt-android-compiler = {module = "com.google.dagger:hilt-android-compiler", version.ref = "hiltversion"}
hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hiltComposeNav"}
flowlayout = { module = "com.google.accompanist:accompanist-flowlayout", version.ref = "flowlVer"}
#Retrofit
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofitVer"}
okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttpVer" }
okhttp-log = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttpVer"}
retrofit-converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "rerofitGsonCv"}
gson = { module = "com.google.code.gson:gson", version.ref = "gsonVer"}
coil = { module = "io.coil-kt:coil-compose", version.ref = "coilVer"}
material-icons = { module = "androidx.compose.material:material-icons-extended-android", version.ref = "materialIcon"}
flexible-bottomsheet = { module = "com.github.skydoves:flexible-bottomsheet-material3", version.ref = "flexibleBs"}
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version= "1.9.0"}
dagger-hilt = { id = "com.google.dagger.hilt.android", version = "2.44"}
А это мой build.gradle
(модуль)
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
alias(libs.plugins.dagger.hilt)
alias(libs.plugins.kotlin.kapt)
}
android {
namespace 'com.beliaja.frapomate'
compileSdk 34
defaultConfig {
applicationId "com.beliaja.frapomate"
minSdk 24
targetSdk 34
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary true
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion '1.5.1'
}
packaging {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
}
}
}
dependencies {
implementation libs.androidx.core.ktx
implementation libs.androidx.lifecycle.runtime.ktx
implementation libs.androidx.activity.compose
implementation platform(libs.androidx.compose.bom)
implementation libs.androidx.ui
implementation libs.androidx.ui.graphics
implementation libs.androidx.ui.tooling.preview
implementation libs.androidx.material3
implementation libs.androidx.compose.material
implementation libs.material.icons
implementation libs.flowlayout
implementation libs.flexible.bottomsheet
implementation libs.lifecycle.viewmodel
implementation libs.navigation.compose
implementation libs.kotlin.coroutines
implementation libs.hilt
kapt libs.hilt.compiler
kapt libs.hilt.android.compiler
implementation libs.hilt.navigation.compose
implementation libs.retrofit
implementation libs.okhttp
implementation libs.okhttp.log
implementation libs.retrofit.converter.gson
implementation libs.gson
implementation libs.coil
testImplementation libs.junit
androidTestImplementation libs.androidx.junit
androidTestImplementation libs.androidx.espresso.core
androidTestImplementation platform(libs.androidx.compose.bom)
androidTestImplementation libs.androidx.ui.test.junit4
debugImplementation libs.androidx.ui.tooling
debugImplementation libs.androidx.ui.test.manifest
}
// Allow reference to generate code
kapt {
correctErrorTypes = true
}
и это мой build.gradle
(проект)
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.jetbrains.kotlin.android) apply false
alias(libs.plugins.dagger.hilt) apply false
alias(libs.plugins.kotlin.kapt) apply false
}
Каждый раз, когда я добавлял этот модуль, сборка проекта завершалась неудачей,
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Provides
@Singleton
fun provideRetrofit(): Retrofit {
return Retrofit.Builder()
.baseUrl("https://your-api-base-url.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
}
}
Пожалуйста, кто-нибудь может мне помочь?
Во-первых, я хочу сказать, что вы можете следить за этим официальным сайтом, чтобы использовать внедрение зависимостей с помощью Hilt в своем проекте.
А во-вторых, показанная ошибка говорит о том, что вам следует проверить использование kapt в проекте, возможно, его меньше или неправильный путь реализации.
Приятного кодирования.
Вы видите неправильную реализацию? вот как будет реализована версия каталога
Позвольте мне прислать вам примеры кодов проектов: build.gradle.kts(Project) плагины { alias(libs.plugins.android.application) применить ложный псевдоним (libs.plugins.jetbrains.kotlin.android) применить ложный псевдоним (libs.plugins .dagger.hilt.android) apply false } build.gradle.kts(App Module) плагины { //Остальная реализация находится здесь id("kotlin-kapt") id("dagger.hilt.android.plugin") } Зависимости { //Реализация зависимости Hilt(libs.google.hilt.android) kapt(libs.google.hilt.compiler) } kapt { CorrectErrorTypes = true }
@Ahmet Bostancikli: Если этот код имеет отношение к вашему ответу, пожалуйста, отредактируйте его напрямую. Добавляя код, убедитесь, что он относится к вопросу, т. е. используйте синтаксис Groovy вместо Kotlin и более подробно объясните, что ваш код делает по-другому и почему он решает проблему.
Ваша версия Hilt слишком старая для Kotlin 1.9.
Хотя 2.46 является самой ранней совместимой версией, вам следует напрямую обновить hiltversion
до текущей версии 2.51.1 (на момент написания).
И пока вы этим занимаетесь, возможно, вам также захочется обновить hiltComposeNav
до версии 1.2.0.
Важно: в разделе [plugins]
вашего каталога версий вы (вероятно, случайно) жестко запрограммировали некоторые номера версий. Вместо этого обязательно используйте ссылки на версии:
kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" }
dagger-hilt = { id = "com.google.dagger.hilt.android", version.ref = "hiltversion" }
Вам также следует удалить kapt libs.hilt.compiler
из вашего файла Gradle, в этом нет необходимости, поскольку вы уже используете kapt libs.hilt.android.compiler
.
Вы правы, проблема связана с версией hilt, она не совпадает с моей версией kotlin kapt.
я следил за документацией