У меня проблемы с аннотациями поддержки @StringDef. Они отлично работают, когда библиотека, в которой они находятся, является частью проекта (а не файлом .aar), но когда я компилирую библиотеку как файлы .aar и пытаюсь использовать их в другом проекте, аннотации не применяются.
http://tools.android.com/tech-docs/support-annotations
В разделе «Использование аннотаций в ваших собственных библиотеках» сказано:
Если вы аннотируете свои собственные библиотеки этими аннотациями и используете Gradle для создания артефакта AAR, во время сборки плагин Android Gradle извлечет информацию аннотации и отправит ее в ваш файл AAR для использования клиентами вашей библиотеки. Вы можете посмотреть файл annotations.zip внутри AAR, где записана информация; это использует формат XML внешних аннотаций IntelliJ. Это необходимо, потому что файлы .class не могут содержать достаточно информации об аннотациях для обработки указанной выше информации @IntDef; обратите внимание, что нам нужно записать ссылку на саму константу, а не на ее значение. Плагин Android Gradle будет запускать задачу извлечения аннотаций как часть сборки, если (и только если) ваш проект зависит от библиотеки поддержки аннотаций. (Обратите внимание, что в файл .aar помещаются только аннотации об удержании исходного кода; удержания на уровне класса хранятся в classes.jar.)
Я открыл файл .aar, и внутри него есть файл annotations.zip, и если я его извлечу, там будет XML-файл, содержащий все правильные аннотации.
Я использую @Retention(RetentionPolicy.SOURCE)
, поскольку он говорит, что мне нужно
Приложение, которое я пытаюсь использовать в качестве файлов .aar, действительно зависит от библиотеки поддержки compile 'com.android.support:support-annotations:23.1.1
Что мне не хватает, чтобы эти работы работали?
Изменить: я дважды проверил, что в проекте, использующем их как файлы .aar, также включен процессор аннотаций.