我正在使用Android数据库组件室
我已经配置了一切,但当我编译时,Android Studio给我这个警告:
架构导出目录没有提供给注释处理器,因此 我们不能导出模式。你可以提供 房间。schemaLocation注释处理器参数OR集 exportSchema为false。
根据我的理解,这是DB文件将被定位的位置
它如何影响我的应用程序?这里的最佳实践是什么?我是否应该使用默认位置(false值)?
我正在使用Android数据库组件室
我已经配置了一切,但当我编译时,Android Studio给我这个警告:
架构导出目录没有提供给注释处理器,因此 我们不能导出模式。你可以提供 房间。schemaLocation注释处理器参数OR集 exportSchema为false。
根据我的理解,这是DB文件将被定位的位置
它如何影响我的应用程序?这里的最佳实践是什么?我是否应该使用默认位置(false值)?
当前回答
可能您没有将您的room类添加到@Database(entities = {your_classes})中的RoomDatabase子类中
其他回答
@mikejonesguy答案是完美的,以防万一您计划测试房间迁移(推荐),将模式位置添加到源集。
在你的构建中。Gradle文件你指定一个文件夹来放置这些 生成模式JSON文件。当您更新您的模式时,您将结束 有几个JSON文件,每个版本一个。一定要承诺 每个生成的文件都交给源代码控制。下次你增加的时候 您的版本号再次,房间将能够使用JSON文件 测试。 Florina Muntenescu(来源)
build.gradle
android {
// [...]
defaultConfig {
// [...]
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
}
// add the schema location to the source sets
// used by Room, to test migrations
sourceSets {
androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
}
// [...]
}
可能您没有将您的room类添加到@Database(entities = {your_classes})中的RoomDatabase子类中
我使用。kts Gradle文件(Kotlin Gradle DSL)和Kotlin -kapt插件,但当我使用Ivanov Maksim的答案时,我仍然得到一个脚本编译错误。
Unresolved reference: kapt
对我来说,这是唯一有效的方法:
android {
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
arguments = mapOf("room.schemaLocation" to "$projectDir/schemas")
}
}
}
}
卡普特 { 参数 { arg(“room.schemaLocation”, “$projectDir/schemas”) } }
芬兰湾的科特林?开始吧:
android {
// ... (compileSdkVersion, buildToolsVersion, etc)
defaultConfig {
// ... (applicationId, miSdkVersion, etc)
kapt {
arguments {
arg("room.schemaLocation", "$projectDir/schemas")
}
}
}
buildTypes {
// ... (buildTypes, compileOptions, etc)
}
}
//...
不要忘记插件:
应用插件:“科特林-卡皮特”
有关kotlin注释处理器的更多信息,请访问: 芬兰湾的科特林医生