Мне действительно нужно использовать kapt, когда нет кода kotlin?

Причина этого вопроса следующая: я использовал эту библиотеку, чтобы сделать классы разделяемыми в Java. , и я решил перенести всю модель на классы kotlin.

Прочитав некоторую документацию, я понял, что мне нужно использовать KAPT вместо "annotationProcessor".

Проблема: Дело в том, что позже, когда я пытался запустить приложение, у меня начались проблемы с Dagger 2 и Butterknife, которые использовали «annotationProcessor», поскольку они имеют дело с классами JAVA, а не с классами Kotlin. Чтобы все снова заработало, мне пришлось добавить новую строку в мой файл gradle для каждого «annotationProcessor», но вместо этого использовать «kapt».

Итак, мой вопрос: действительно ли мне нужно это делать, если код, задействованный в использовании этих фреймворков, является чистыми классами Java? Можете ли вы объяснить мне причину этого, если мне нужно это сделать?

Спасибо, что нашли время, чтобы прочитать это!


person Leandro Ocampo    schedule 24.05.2018    source источник


Ответы (1)


Да, вам нужно это сделать.

Как только вы добавите Kapt в проект, он полностью возьмет на себя обработку аннотаций, поэтому задачи компиляции Java не будут запускать какие-либо процессоры аннотаций. Это необходимо для того, чтобы сделать код, сгенерированный из аннотаций как в Kotlin, так и в Java, доступным для компилятора Kotlin, который запускается до javac.

Поскольку Kapt обрабатывает аннотации как в файлах Kotlin, так и в файлах Java, его использование для аннотаций в Java является рекомендуемым способом для проектов Kotlin + Java.

person hotkey    schedule 24.05.2018
comment
Привет, спасибо за ответ. Тогда больше не нужно использовать annotationProcessor, верно? - person Leandro Ocampo; 25.05.2018
comment
Вы правы, annotationProcessor не используется Kapt, поэтому вы можете удалить зависимости этой конфигурации. - person hotkey; 25.05.2018