为什么 androidx.room.RoomDatabase 不被识别?
Why androidx.room.RoomDatabase is not recognised?
我正在学习模块化,但在我的模块之一中 androidx.room.*
未被识别。降级 Room 版本仅对 @Database
注释有帮助。此外,模块似乎看不到 Room.roomKtx
实现,因为快速帮助建议将此实现添加到 build.gradle
。我的 kotlin 版本 是 1.6.21
ProfileDatabase.kt
import androidx.room.Database
import androidx.room.RoomDatabase
import com.example.modules.Gift
import com.example.modules.Profile
@Database(
entities = [Profile::class, Gift::class],
version = 1
)
abstract class ProfileDatabase: RoomDatabase() {
abstract val profileDao: ProfileDao
companion object {
const val DATABASE_NAME = "profile_db"
}
}
build.gradle(:profileDatabase)
apply {
from("$rootDir/library-build.gradle")
plugin 'kotlin-kapt'
}
dependencies {
implementation(project(':modules'))
implementation Kotlinx.coroutinesCore
implementation Room.runtime
implementation Room.roomKtx
kapt Room.compiler
}
Room.kt
object Room {
private const val roomVersion = "2.4.2"
const val runtime = "androidx.room:room-runtime:$roomVersion"
const val compiler = "androidx.room:room-compiler:$roomVersion"
const val roomKtx = "androidx.room:room-ktx:$roomVersion"
}
我觉得是正确的。但是您是否在正确的构建中添加了 Room 依赖项。gradle-file?您在导入 Room 时在同一个 gradle 文件中导入“模块”模块,我怀疑您已将数据库实现放入您正在导入的模块中。
问题是错误的“模块类型”。我使用 apply plugin:'java-library'
,
但应该使用 apply plugin:'com.android.library'
.
我正在学习模块化,但在我的模块之一中 androidx.room.*
未被识别。降级 Room 版本仅对 @Database
注释有帮助。此外,模块似乎看不到 Room.roomKtx
实现,因为快速帮助建议将此实现添加到 build.gradle
。我的 kotlin 版本 是 1.6.21
ProfileDatabase.kt
import androidx.room.Database
import androidx.room.RoomDatabase
import com.example.modules.Gift
import com.example.modules.Profile
@Database(
entities = [Profile::class, Gift::class],
version = 1
)
abstract class ProfileDatabase: RoomDatabase() {
abstract val profileDao: ProfileDao
companion object {
const val DATABASE_NAME = "profile_db"
}
}
build.gradle(:profileDatabase)
apply {
from("$rootDir/library-build.gradle")
plugin 'kotlin-kapt'
}
dependencies {
implementation(project(':modules'))
implementation Kotlinx.coroutinesCore
implementation Room.runtime
implementation Room.roomKtx
kapt Room.compiler
}
Room.kt
object Room {
private const val roomVersion = "2.4.2"
const val runtime = "androidx.room:room-runtime:$roomVersion"
const val compiler = "androidx.room:room-compiler:$roomVersion"
const val roomKtx = "androidx.room:room-ktx:$roomVersion"
}
我觉得是正确的。但是您是否在正确的构建中添加了 Room 依赖项。gradle-file?您在导入 Room 时在同一个 gradle 文件中导入“模块”模块,我怀疑您已将数据库实现放入您正在导入的模块中。
问题是错误的“模块类型”。我使用 apply plugin:'java-library'
,
但应该使用 apply plugin:'com.android.library'
.