执行注释处理时从/src 和/build 扫描源文件

Scan source files from both /src and /build when perform annotation processing

由于某些原因,我正在为我的 Android 应用程序开发注释处理器以生成 类,它扩展 RealmObject 并用 @RealmClass@PrimaryKey。我认为 Realm 将从我的处理器生成的 类 生成接口和中介代码。但它不起作用。

// Generated in app/build/generated/source/apt/debug/com/test/RealmRecord.java
// package and imports
@RealmClass
public class RealmRecord extends RealmObject {
    @Primary
    long id;
    String content;
    // getters and setters
}

我发现在我的Android Studio环境中,注解处理器似乎没有搜索app/build/generated/source/apt/xxx中的文件...所以Realm的处理器找不到我的 类 并进一步处理..

如有任何建议,我们将不胜感激!

这是 Realm 注释处理器中的错误。见 this line:

@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
    // Don't run this processor in subsequent runs. We created everything in the first one.
    if (hasProcessedModules) {
        return CONSUME_ANNOTATIONS;
    }

    ...

    // more buggy code down there
}

他们的处理器违反了注释处理合同:他们没有在每一轮中增量处理新文件,而是在第一轮后放弃处理。