gradle 异常 Android 无参数 doa 定义的房间

gradle exception with Android Room on parameterless doa definitions

我正在将一些 Android 数据库代码从我自己编写的注释处理器转换到 Room。我遇到了一个非常模糊的错误。相当长一段时间后,通过分而治之,我将其缩小为 运行 固定查询的两种方法(即它不带任何参数)。比如下面的:

@Query("update blah set mDownloadStatus=3, mTaskId=0 where mDownloadStatus=2 or mDownloadStatus >= 4")
    void resetDownloads();

在运行宁./gradle --stacktrace assembleDebug之后,我得到了下面的堆栈跟踪(上面还有更多,但这是它的核心)。

Caused by: java.util.NoSuchElementException: List is empty. at kotlin.collections.CollectionsKt___CollectionsKt.first(_Collections.kt:178) at android.arch.persistence.room.writer.DaoWriter.createPreparedDeleteOrUpdateQueries(DaoWriter.kt:124) at android.arch.persistence.room.writer.DaoWriter.createTypeSpecBuilder(DaoWriter.kt:86) at android.arch.persistence.room.writer.ClassWriter.write(ClassWriter.kt:40) at android.arch.persistence.room.RoomProcessor$DatabaseProcessingStep.process(RoomProcessor.kt:60) at com.google.auto.common.BasicAnnotationProcessor.process(BasicAnnotationProcessor.java:318) at com.google.auto.common.BasicAnnotationProcessor.process(BasicAnnotationProcessor.java:171) at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794) at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705) at com.sun.tools.javac.processing.JavacProcessingEnvironment.access00(JavacProcessingEnvironment.java:91) at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035) at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176) at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170) at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856) at com.sun.tools.javac.main.Main.compile(Main.java:523) ... 126 more

这是a known bug in 1.0.0-alpha4。回到 1.0.0-alpha3 直到这个问题得到解决。