Referencia no resuelta kapt y ksp en Android Studio al intentar realizar la configuración para el uso de la base de datos local ROOM

Resuelto jakeprog123 asked hace 54 años • 0 respuestas

Recientemente comencé a aprender programación en Android Studio Kotlin y después de leer algunos tutoriales sobre el lenguaje Kotlin y crear una interfaz de usuario en Android Studio, decidí comenzar a aprender cómo usar la base de datos ROOM. Después de algunas pruebas para realizar la configuración buscando en Internet diferentes tutoriales en YouTube o varios blogs, finalmente decidí adoptar un enfoque más formal y leer la documentación. Sin embargo, para mi decepción, después de que logré deshacerme de algunos errores, todavía me encontré con el siguiente error: "Kap de referencia no resuelto" y "ksp de referencia no resuelto" en mi archivo build.gradle.kts (Módulo: aplicación). El proyecto en el que trabajo es completamente nuevo excepto las modificaciones que agregué en el archivo antes mencionado. Agrego el contenido del archivo a continuación.

plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}

android {
    namespace = "com.example.useofroomdatabase"
    compileSdk = 34

    defaultConfig {
        applicationId = "com.example.useofroomdatabase"
        minSdk = 24
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary = true
        }
    }

    buildTypes {
        release {
            isMinifyEnabled = 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("androidx.core:core-ktx:1.12.0")
    implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
    implementation("androidx.activity:activity-compose:1.8.2")
    implementation(platform("androidx.compose:compose-bom:2023.08.00"))
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.ui:ui-graphics")
    implementation("androidx.compose.ui:ui-tooling-preview")
    implementation("androidx.compose.material3:material3")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
    androidTestImplementation(platform("androidx.compose:compose-bom:2023.08.00"))
    androidTestImplementation("androidx.compose.ui:ui-test-junit4")
    debugImplementation("androidx.compose.ui:ui-tooling")
    debugImplementation("androidx.compose.ui:ui-test-manifest")

    val room_version = "2.6.1"

    implementation("androidx.room:room-runtime:$room_version")
    annotationProcessor("androidx.room:room-compiler:$room_version")

    // To use Kotlin annotation processing tool (kapt)
    kapt("androidx.room:room-compiler:$room_version")
    // To use Kotlin Symbol Processing (KSP)
    ksp("androidx.room:room-compiler:$room_version")

    // optional - Kotlin Extensions and Coroutines support for Room
    implementation("androidx.room:room-ktx:$room_version")

    // optional - RxJava2 support for Room
    implementation("androidx.room:room-rxjava2:$room_version")

    // optional - RxJava3 support for Room
    implementation("androidx.room:room-rxjava3:$room_version")

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation("androidx.room:room-guava:$room_version")

    // optional - Test helpers
    testImplementation("androidx.room:room-testing:$room_version")

    // optional - Paging 3 Integration
    implementation("androidx.room:room-paging:$room_version")
}

Entonces, para resumir, tengo 2 preguntas para mi mejor aclaración. En primer lugar, ¿para qué se utilizan estos 2 conceptos (kapt y ksp)? Y en segundo lugar, ¿cuál es el problema en mi código y cómo puedo solucionarlo para continuar con mi práctica? Gracias de antemano.

PD: me inspiré en esta documentación: https://developer.android.com/training/data-storage/room#kts

Actualización posterior: finalmente logré importar el módulo kapt. Todavía no sé cómo deshacerme del error de "referencia no resuelta" para el módulo ksp, pero por lo que aprendí, las cosas también deberían funcionar solo con kapt, tal vez más lento, pero por ahora está bien. Hice los cambios desde el principio de este enlace: https://www.youtube.com/watch?v=lkGIj1xSpFY

Finalmente, podría ser algo relacionado con la compatibilidad de versiones entre los módulos y Kotlin u otros aspectos relacionados con Android Studio en los que profundizaré.

jakeprog123 avatar Jan 01 '70 08:01 jakeprog123
Aceptado

Simplemente realice los cambios mencionados a continuación.

build.gradle a nivel de módulo

plugins {
    id("com.google.devtools.ksp")
}

build.gradle a nivel de proyecto

plugins {
    id("com.google.devtools.ksp") version "1.8.10-1.0.9" apply false
}

Para una mejor comprensión consulte esta documentación.

iSandeep avatar Feb 16 '2024 18:02 iSandeep