android - 注解处理时从/src和/build中扫描源文件

标签 android realm annotation-processing

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

// 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
}

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

关于android - 注解处理时从/src和/build中扫描源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42487007/

相关文章:

Android 单元测试失败并出现 java.lang.IllegalArgumentException : INTERNET permission is required

android - Glass XE16.11 上的 Glitch Open CV 相机预览

android - 试图删除 Android Realm 文件,但出现异常

ios - RxSwift Realm 在 RunLoop 中观察 Array

Java注解处理如何检查VariableElement是原始类型(int,float)还是某个类的对象

java - 如何从 native iOS 和/或 Android 应用程序触发转换像素/跟踪像素?

android - 在 Fragment 之间发生变化时调用 Activity 中的方法

使用 realm.io 的 iOS 测试不起作用

java - 在没有实体的文件中 hibernate native 查询

使用注释处理器时,IntelliJ 中的 Maven 项目构建失败 (google/auto-value)