何时/如何生成会议室模式文件?

时间:2019-07-03 09:39:34

标签: android android-room

哪个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"

1 个答案:

答案 0 :(得分:0)

如果“发现”您在@Entity类中所做的更改可能会导致新的模式,并且/或者如果您在@Database中进行了更改,Room将生成一个新的模式JSON文件,例如更新版本,添加或删除实体等。

例如,重命名带有@Entity的带注释类中的字段应导致生成文件。同时,不应使用@Ignore添加新字段。

如果在Kotlin中,则实际生成架构的Gradle任务为compileDebugJavakaptDebugKotlin(均为调试变量)。 Room是一个注释处理器,因此它可以在编译,分析代码,生成新代码以及生成模式JSON文件的过程中进行工作。