当我尝试构建我的应用程序时,出现以下编译错误:

Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:
com.example.persistence.AppDatabase, unresolved supertypes: androidx.room.RoomDatabase

持久性设置位于单独的Android模块(持久性)中。

build.gradle
// Kotlin StdLib
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

// Room
implementation      "androidx.room:room-runtime:$androidXRoom"
kapt "androidx.room:room-compiler:$androidXRoom"
implementation      "androidx.room:room-rxjava2:$androidXRoom"

ext.androidXRoom =“2.1.0-alpha02”

我试图将Kotlin版本, session 室版本更改回Android Arch Room,但无法正常工作。我还尝试清理项目并使Android Studio的缓存无效。但这不起作用。

编辑:AppDatabase源
package com.example.persistence.db

import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import com.example.persistence.post.PostDbDao
import com.example.persistence.post.PostDbEntity

@Database(entities = [PostDbEntity::class], version = 1)
abstract class AppDatabase : RoomDatabase() {

    abstract fun favoritePostsDao(): PostDbDao

    companion object {

        var INSTANCE: AppDatabase? = null

        fun getDatabase(context: Context): AppDatabase? {
            if(INSTANCE == null) {
                synchronized(AppDatabase::class) {
                     INSTANCE = Room.databaseBuilder(context.applicationContext, AppDatabase::class.java, "post_db").build()
                }
            }
            return INSTANCE
        }

        fun destroy() {
            INSTANCE = null
        }
    }

}

最佳答案

问题很可能在于您如何定义依赖项,RoomDatabase是公共(public)API的一部分,因为AppDatabase对其进行了扩展,并且您大概在下游依赖项中使用了该类。但是,RoomDatabase声明为仅实现依赖项。这意味着在编译期间,该类通常不可用于下游依赖项。

尝试将"androidx.room:room-runtime:$androidXRoom"更改为api配置,使其成为公共(public)API的一部分。那应该可以解决您遇到的错误。

关于android - AndroidX Room未解析的父类(super class)型RoomDatabase,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53152796/

10-10 11:26