Android 为什么来自同一库的某些导入会作为未解析的引用返回?
因此,作为我论文的一部分,我目前正试图在一个开源项目中添加一个room数据库,我从android本身抓取了一个最新的例子,并为Kotlin DSL修改了它,我使用了相同的DAO和数据库结构,但都有导入错误。通常情况下,这不会是一个需要解决的问题,除非我从同一个库中的位置得到错误,这就是为什么我必须首先问这个问题的原因。主要的导入问题与androidx.room有关。下面是有问题的kotlin文件,之后是build.gradle.kts 另外,android studio建议我使用persistence.room.runtime,但从我的尝试和我能找到的情况来看,这也不能解决我的问题Android 为什么来自同一库的某些导入会作为未解析的引用返回?,android,kotlin,gradle-kotlin-dsl,Android,Kotlin,Gradle Kotlin Dsl,因此,作为我论文的一部分,我目前正试图在一个开源项目中添加一个room数据库,我从android本身抓取了一个最新的例子,并为Kotlin DSL修改了它,我使用了相同的DAO和数据库结构,但都有导入错误。通常情况下,这不会是一个需要解决的问题,除非我从同一个库中的位置得到错误,这就是为什么我必须首先问这个问题的原因。主要的导入问题与androidx.room有关。下面是有问题的kotlin文件,之后是build.gradle.kts 另外,android studio建议我使用persiste
import androidx.room.Database //works
import androidx.room.Room // unresolved reference
import androidx.room.RoomDatabase // unresolved reference
@Database(entities = [GameDatabase::class], version = 1, exportSchema = false)
abstract class Database : RoomDatabase() {
abstract val DatabaseDAO: DatabaseDAO
companion object {
@Volatile
private var INSTANCE: Database? = null
fun getInstance(): Database {
synchronized(this) {
var instance = INSTANCE
if (instance == null) {
instance = Room.databaseBuilder(
Database::class.java,
"game_database"
)
.fallbackToDestructiveMigration()
.build()
INSTANCE = instance
}
return instance
}
}
}
}
以下是gradle构建模块:
plugins {
//id("kotlin")
kotlin("kapt")
//kotlin("android")
//kotlin("android-extensions")
//id("kotlin-android")
//id("kotlin-android-extensions")
//id("androidx.navigation.safeargs")
}
java {
sourceCompatibility = JavaVersion.VERSION_1_6
}
tasks {
compileJava {
options.encoding = "UTF-8"
}
compileTestJava {
options.encoding = "UTF-8"
}
}
sourceSets {
main {
java.srcDir("src/")
}
}
// added
dependencies {
val room_version = "2.2.6"
val life_version = "2.2.0"
// Room and Lifecycle dependencies
implementation("androidx.room:room-runtime:$room_version")
kapt("androidx.room:room-compiler:$room_version")
//implementation("androidx.room:room-ktx:$room_version")
implementation("androidx.legacy:legacy-support-v4:1.0.0")
implementation("androidx.lifecycle:lifecycle-extensions:$life_version")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$life_version")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:$life_version")
implementation("androidx.lifecycle:lifecycle-common-java8:$life_version")
// adding Firebase dependencies
//implementation("android.arch.persistence.room:runtime:1.1.1")
//annotationProcessor("android.arch.persistence.room:compiler:2.2.6")
}
我对Kotlin DSL非常陌生,因此这可能是一个明显的错误,但我在该领域也找不到类似的东西。我通常这样放置实现:
//Room
implementation "androidx.room:room-runtime:2.2.6"
kapt "androidx.room:room-compiler:2.2.6"
// optional - Kotlin Extensions and Coroutines support for Room
implementation "androidx.room:room-ktx:2.2.6"
另外,您是否放置了kapt插件?如果没有:
plugins {
id 'kotlin-android'
id 'kotlin-kapt'//this one
}
还有,试着清理和重建项目。我在一开始就有kapt,我相信这一部分是有效的,但我仍然得到了与以前相同的错误。我试图清理代码并重建项目。出于好奇,你认为我需要kotlin android吗?因为代码本身完全是这些库之外的kotlin。