Android 何时/如何生成文件室架构文件?

Android 何时/如何生成文件室架构文件?,android,android-room,Android,Android Room,哪个gradle task/Studio功能生成房间模式文件?是否存在跳过文件生成的任何情况 几周前,我做了一些本应更改模式文件的更改,但该文件没有更改。现在我做了一个新的更改(删除了一个实体,包括Room数据库类中该实体的引用),现在所有的更改都出现在模式文件中 ->为什么现在生成模式文件,而不是在过去几天/几周的许多构建中生成 当我在构建项目之前删除模式时,它的生成似乎更加可靠。但这显然不是强制性的,因为当我今天删除那个实体时它也起作用了 我读了这个问题,但我的build.gradle中已经

哪个gradle task/Studio功能生成房间模式文件?是否存在跳过文件生成的任何情况

几周前,我做了一些本应更改模式文件的更改,但该文件没有更改。现在我做了一个新的更改(删除了一个实体,包括Room数据库类中该实体的引用),现在所有的更改都出现在模式文件中

->为什么现在生成模式文件,而不是在过去几天/几周的许多构建中生成

当我在构建项目之前删除模式时,它的生成似乎更加可靠。但这显然不是强制性的,因为当我今天删除那个实体时它也起作用了

我读了这个问题,但我的build.gradle中已经有以下几行内容:

        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
            }
        }

如果Room“看到”您在
@实体
类中更改了可能导致新架构的内容,和/或您在
@数据库
中更改了内容,例如更新版本、添加或删除实体等,它将生成一个新的架构JSON文件

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


实际生成模式的Gradle任务是
compileDebugJava
kaptDebugKotlin
if-in-Kotlin(对于调试变量都是)。Room是一个注释处理器,因此它在编译、分析代码、生成新代码和生成模式JSON文件期间执行其工作。

您是否增加了数据库版本号?否,它仍然处于“1”状态。该应用程序尚未发布。它以前在版本=1时工作过,所以这不是问题。我猜“制作项目”(锤子图标)调用gradle任务,对吗?是的,“制作项目”应该调用该任务,“运行”按钮(绿色播放图标)也应该调用该任务。正如我在问题中提到的,我在几周前做了这些更改,但没有触发模式文件生成。我每天多次使用“Make project”和“Run”…可能还有其他变量在起作用,例如,如果您的房间实体位于单独的模块中,Gradle可能由于缓存或编译避免而无法运行编译任务。或者你只是遇到了一个奇怪的错误。但是,基于文件室源代码()如果给定了schemaLocation,并且exportSchema属性为true,并且模式发生了更改,则应该生成模式。这些其他变量是我感兴趣的:)实体在同一个模块中,我多次遇到此问题。
    def room_version = "2.1.0"
    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"