当我尝试构建我的应用程序时,出现以下编译错误:
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/