当前位置: 首页 > 知识库问答 >
问题:

尝试使用android创建房间数据库,但一直收到依赖错误

艾谦
2023-03-14

Android.com 说要将这些依赖项添加到您的 gradle 文件中。我不断在以kapt和ksp开头的行上遇到错误,说找不到这些方法。有什么想法吗?对不起,我不聪明。

//下面是android说要放进去的

def room_version = "2.3.0"

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 Symbolic 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:2.4.0-alpha04")

构建文件 'C:\Users\tanne\AndroidStudioProjects\LazyAlarm\app\build.gradle' 行: 51

评估项目时出现问题:应用程序。

在org . grad le . API . internal . artifacts . DSL . dependencies . defaultdependencyhandler类型的对象上找不到参数[androidx . room:room-compiler:2 . 3 . 0]的方法kapt()

////////////////////////////////////////////下面的gradle文件

plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
}

android {
compileSdk 31

defaultConfig {
    applicationId "com.example.lazyalarm"
    minSdk 22
    targetSdk 31
    versionCode 1
    versionName "1.0"


    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

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'
}
}

 dependencies {

implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.room:room-ktx:2.3.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
def room_version = "2.3.0"

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 Symbolic 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:2.4.0-alpha04")

}

共有3个答案

夏知
2023-03-14

以下内容对我有用。

>

  • settings.gradle

     pluginManagement {
     repositories {
         gradlePluginPortal()
         google()
     }
     plugins {
         id("com.google.devtools.ksp") version "1.6.20-1.0.5"
     }
    

    KSP版本参考:Maven存储库:com.google.devtools.ksp

    >

  • app/build.gradle

    plugins {
      id 'com.google.devtools.ksp'    }
    
    implementation("androidx.room:room-runtime:$rootProject.roomVersion")
    annotationProcessor("androidx.room:room-compiler:$rootProject.roomVersion")
    ksp("androidx.room:room-compiler:$rootProject.roomVersion")
    

    build.gradle

     buildscript {  
    
     ext {
      // app dependencies
      kotlinVersion = '1.6.20'
      roomVersion = '2.4.2' }
     }
    

  • 濮阳旺
    2023-03-14

    试试这个依赖

    def room_version = "1.1.1"
    implementation "android.arch.persistence.room:runtime:$room_version"
    annotationProcessor "android.arch.persistence.room:compiler:$room_version"
    testImplementation "android.arch.persistence.room:testing:$room_version"
    
    罗昱
    2023-03-14

    您似乎已将一堆行复制到<code>构建中。gradle文件是谷歌文档中的逐字记录。不幸的是,他们的文档有问题。特别是,这些行中的许多表示选择,您需要选择您需要的。特别是,选择这两行中的一行:

    kapt("androidx.room:room-compiler:$room_version")
    ksp("androidx.room:room-compiler:$room_version")
    

    ...,然后选择以下四行之一:

    implementation("androidx.room:room-ktx:$room_version")
    implementation "androidx.room:room-rxjava2:$room_version"
    implementation "androidx.room:room-rxjava3:$room_version"
    implementation "androidx.room:room-guava:$room_version"
    

    然后,根据您从第一对中的选择,您可能需要将另一个插件添加到文件顶部的plugins块中。如果选择kapt行,则需要添加id“kotlin kapt”。我没有使用ksp选项,也不知道您需要什么插件。

     类似资料:
    • 错误:查询有问题:[SQLITE_ERROR]SQL错误或缺少数据库(没有这样的表:任务) 显示了这个错误,我怎么可能修复它? 我正在学习这个教程

    • 我正在使用Room作为应用程序的数据库。我正在用改型从服务器上获取数据。场景是,我有一个名为Photo的类,并用实体进行注释,以供room使用,我使用这个类使用retroft映射API的响应。我需要使用同一个类创建两个表,例如:最新的照片表和流行的照片表。我怎样才能做到这一点。 > 我不想创建一个新的类并使它从另一个类扩展 我有一个想法,通过插入一个新的列,表明照片是流行的或最新的,但我不知道如何

    • 给定如下所示的房间数据库DAO: 是否有一种方法可以在中添加一个记录器或类似的东西,这样我就可以看到哪些语句正在执行。这在开发过程中非常有用,因为我可以立即检查函数是否正确地转换为预期的SQL语句。

    • https://medium . com/Google-developers/understanding-migrations-with-room-f01e 04 b 07929上有一篇关于房间迁移的很棒的文章 然而,我仍然错过了房间中的“灾难”恢复机制(例如,当发生异常情况时,将清除并重新创建数据库的fallbackToDestructiveRecreationOnMigrationError(

    • 我转换java代码到kotlin代码,我得到类型未解决的java类错误。 我的Java类是 已转换的Kotlin类 非常感谢。