2017-02-27 28 views
1

由於某些原因,我正在開發用於我的Android應用程序的註釋處理器,以生成延伸RealmObject的類並使用@RealmClass@PrimaryKey註釋。我認爲Realm將從我的處理器生成的類生成接口和中介代碼。但它不起作用。當執行註釋處理時,從/ src和/ build掃描源文件

// 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環境,註釋處理器似乎不是應用程序/生成搜索文件/生成/源/公寓/ XXX ...等等領域的處理器無法找到我的類和過程更多..

任何建議將不勝感激!

回答

1

這是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 
} 

他們的處理器違反註釋處理合同:不是在每個回合遞增處理新的文件,他們放棄處理在第一輪之後。

+0

如果這是一個錯誤,應該提交Github問題。 – EpicPandaForce

+0

@EpicPandaForce如果您使用Realm,請隨時這樣做。我不這樣做,並且讓人們相信他們應該改變他們的「工作」代碼在空閒時間通常會非常痛苦。 – user1643723