2017-02-27 5 views
1

몇 가지 이유로 인하여 RealmObject을 확장하고 @RealmClass@PrimaryKey이라는 주석이 달린 클래스를 생성하는 Android 응용 프로그램 용 주석 프로세서를 개발하고 있습니다. 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 
} 

내가 내 안드로이드 스튜디오 환경에서, 주석 프로세서가 응용 프로그램/빌드에있는 파일을 검색하지 보인다 발견/생성/소스/아파트/XXX ... 그래서 영역의 프로세서는 내 수업 및 프로세스를 찾을 수 없습니다 추가 ..

어떤 제안을 주시면 감사하겠습니다!

답변

1

이것은 Realm annotation processor의 버그입니다. 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 렐름을 사용하는 경우 자유롭게 사용하십시오. 나는 그렇지 않으며 사람들이 자신의 "일하는"코드를 변경해야한다는 것을 설득하는 것은 자유로운 시간에 그렇게하는 것이 종종 너무 힘들다. – user1643723