アプリをビルドしようとすると、次のコンパイル エラーが発生しました:
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 モジュール (永続性) にあります。
ビルド
// 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 バージョン、ルーム バージョンを 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
}
}
}
ベストアンサー1
問題は、依存関係の定義方法にある可能性が高く、RoomDatabase
はパブリック API の一部でありAppDatabase
、それを拡張し、下流の依存関係でそのクラスを使用すると考えられます。ただし、 はRoomDatabase
実装のみの依存関係として宣言されています。つまり、コンパイル中にクラスが下流の依存関係で通常使用できないことを意味します。
"androidx.room:room-runtime:$androidXRoom"
パブリック API の一部となるように構成を変更してみてくださいapi
。これにより、発生しているエラーが解決されるはずです。