Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么来自同一库的某些导入会作为未解析的引用返回?_Android_Kotlin_Gradle Kotlin Dsl - Fatal编程技术网

Android 为什么来自同一库的某些导入会作为未解析的引用返回?

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

因此,作为我论文的一部分,我目前正试图在一个开源项目中添加一个room数据库,我从android本身抓取了一个最新的例子,并为Kotlin DSL修改了它,我使用了相同的DAO和数据库结构,但都有导入错误。通常情况下,这不会是一个需要解决的问题,除非我从同一个库中的位置得到错误,这就是为什么我必须首先问这个问题的原因。主要的导入问题与androidx.room有关。下面是有问题的kotlin文件,之后是build.gradle.kts

另外,android studio建议我使用persistence.room.runtime,但从我的尝试和我能找到的情况来看,这也不能解决我的问题


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。