尝试使用 android 创建房间数据库,但不断出现依赖性错误
Trying to create room database with android, but keep getting dependency error
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
评估项目“:app”时出现问题。
Could not find method kapt() for arguments [androidx.room:room-compiler:2.3.0] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
///////////////////////////////////////
//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")
}
试试这个依赖关系
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"
您似乎已经从 Google 的文档中逐字复制了一堆行到您的 build.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
选项,不知道你需要什么插件,如果有的话。
使用 ksp
以下适合我。
settings.gradle
pluginManagement {
repositories {
gradlePluginPortal()
google()
}
plugins {
id("com.google.devtools.ksp") version "1.6.20-1.0.5"
}
ksp 版本参考:Maven Repository: 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' }
}
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
评估项目“:app”时出现问题。
Could not find method kapt() for arguments [androidx.room:room-compiler:2.3.0] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
/////////////////////////////////////// //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")
}
试试这个依赖关系
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"
您似乎已经从 Google 的文档中逐字复制了一堆行到您的 build.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
选项,不知道你需要什么插件,如果有的话。
使用 ksp
以下适合我。
settings.gradle
pluginManagement { repositories { gradlePluginPortal() google() } plugins { id("com.google.devtools.ksp") version "1.6.20-1.0.5" }
ksp 版本参考:Maven Repository: 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' } }