我正在使用Android数据库组件室
我已经配置了一切,但当我编译时,Android Studio给我这个警告:
架构导出目录没有提供给注释处理器,因此 我们不能导出模式。你可以提供 房间。schemaLocation注释处理器参数OR集 exportSchema为false。
根据我的理解,这是DB文件将被定位的位置
它如何影响我的应用程序?这里的最佳实践是什么?我是否应该使用默认位置(false值)?
我正在使用Android数据库组件室
我已经配置了一切,但当我编译时,Android Studio给我这个警告:
架构导出目录没有提供给注释处理器,因此 我们不能导出模式。你可以提供 房间。schemaLocation注释处理器参数OR集 exportSchema为false。
根据我的理解,这是DB文件将被定位的位置
它如何影响我的应用程序?这里的最佳实践是什么?我是否应该使用默认位置(false值)?
当前回答
如果你像我一样最近移动某些类到不同的包等。你使用android导航。确保将argType更改为与您的新包地址匹配。 来自:
app:argType="com.example.app.old.Item"
to:
app:argType="com.example.app.new.Item"
其他回答
如果你像我一样最近移动某些类到不同的包等。你使用android导航。确保将argType更改为与您的新包地址匹配。 来自:
app:argType="com.example.app.old.Item"
to:
app:argType="com.example.app.new.Item"
我使用。kts Gradle文件(Kotlin Gradle DSL)和Kotlin -kapt插件,但当我使用Ivanov Maksim的答案时,我仍然得到一个脚本编译错误。
Unresolved reference: kapt
对我来说,这是唯一有效的方法:
android {
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
arguments = mapOf("room.schemaLocation" to "$projectDir/schemas")
}
}
}
}
Kotlin的方式根据官方文件:
android {
...
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments += mapOf(
"room.schemaLocation" to "$projectDir/schemas",
"room.incremental" to "true",
"room.expandProjection" to "true"
)
}
}
}
}
可能您没有将您的room类添加到@Database(entities = {your_classes})中的RoomDatabase子类中
致Kotlin KSP:
ksp {
arg('room.schemaLocation', "$projectDir/schemas")
}