Процессор аннотаций с библиотекой Android (область)
Я пытаюсь создать процессор аннотаций, который работает поверх realm.io. К сожалению, для использования области вам нужен проект Android, в то время как для создания процессора аннотаций вам нужен Java (для того, чтобы импортировать javax.annotation.processing.*)
Кто-нибудь знает способ импортировать AbstractProcessor и все другие необходимые вещи в библиотеке Android? Я не могу найти способ сделать это (уже переключил targetCompatibility и sourceCompatibility на 1.7)
1 ответ
способ импортировать AbstractProcessor и все другие необходимые вещи в библиотеку Android
Лучший вопрос: зачем тебе это?
Если у вас сложилось впечатление, что ваш процессор будет зависеть от классов Realm (или любых других классов Android), - это не так. Когда вы пишете код, который использует APT Mirror API, вам не нужно ссылаться на эти классы напрямую, только по именам. Полученный код будет выглядеть так:
DeclaredType theBinder = lookup("android.os.Binder");
DeclaredType theIInterface = lookup("android.os.IInterface");
DeclaredType theCreator = lookup("android.os.Parcelable.Creator");
...
private DeclaredType lookup(CharSequence name) {
return types.getDeclaredType(elements.getTypeElement(name));
}
Затем вы приступите к манипулированию созданными TypeMirrors с помощью методов Types
а также Elements
служебные классы. Вы также можете преобразовать эти зеркала в альтернативные форматы, такие как JavaPoet TypeName от Square, но вам это не нужно, поскольку Mirror API предоставляет большинство возможностей, которые вам могут понадобиться.
Вы определенно не хотите загружать классы Realm в свой процессор аннотаций. Во-первых, в этом просто нет необходимости. Но, что более важно, как вы указали в этом вопросе, зачастую невозможно использовать одну и ту же настройку для процессора аннотаций и его устройств времени выполнения. Эта проблема не является уникальной для Android, например, никто не ожидает установки полноценного сервера приложений для компиляции серверной программы, использующей процессор аннотаций с поддержкой JAXB.
Если вам действительно нужен какой-то кусок кода из Realm в вашем процессоре, и он не доступен как отдельная библиотека Java, самый простой способ - просто скопировать этот код в ваш процессор.