哪个gradle任务/ Studio功能会生成Room模式文件?在什么情况下会跳过文件生成?
几周前,我进行了一些更改,这些更改应该更改了架构文件,但是该文件没有更改。现在,我做了一个新更改(删除了一个实体,包括Room数据库类中该实体的引用),现在所有更改都出现在架构文件中。
->为什么现在生成了架构文件,却没有生成过去几天/几周的众多构建文件之一?
在构建项目之前删除架构时,似乎可以更可靠地生成该架构。但这显然不是强制性的,因为当我今天删除该实体时,它也起作用...
我阅读了this问题,但是我的build.gradle中已经包含以下几行:
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
def room_version = "2.1.0"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
答案 0 :(得分:0)
如果“发现”您在@Entity
类中所做的更改可能会导致新的模式,并且/或者如果您在@Database
中进行了更改,Room将生成一个新的模式JSON文件,例如更新版本,添加或删除实体等。
例如,重命名带有@Entity
的带注释类中的字段应导致生成文件。同时,不应使用@Ignore
添加新字段。
如果在Kotlin中,则实际生成架构的Gradle任务为compileDebugJava
或kaptDebugKotlin
(均为调试变量)。 Room是一个注释处理器,因此它可以在编译,分析代码,生成新代码以及生成模式JSON文件的过程中进行工作。