Обработка аннотаций с помощью kapt Android Studio

Я пытаюсь использовать kapt для использования моего обработчика аннотаций. Но я столкнулся с несколькими проблемами.

Компонент обработчика комментариев связан таким образом:

kapt files('libs/processor.jar') provided files('libs/processor.jar') 

1) Я использую JavaPoet для генерации кода. И сохранить мой класс таким образом

  JavaFile javaFile = JavaFile.builder(PACKAGE, typeSpec).build(); javaFile.writeTo(processingEnv.getFiler()); 

Но он всегда сохраняет его для сборки \ сгенерированного \ source \ kapt \ release и никогда не отлаживать папку независимо от варианта сборки.

введите описание изображения здесь

2) Вторая проблема заключается в том, что сгенерированный файл иногда не обновляется, пока я не нажму Build-> Rebuild

kotlin-kapt автоматически выберет правильный выходной каталог на основе встроенного варианта библиотеки / приложения. При создании проекта с одним модулем com.android.application , Android Studio будет использовать вариант приложения, выбранный в меню «Варианты сборки».

Окно вариантов сборки

Это неверно для библиотечных модулей, которые, если они не настроены иначе, опубликуют вариант сборки release – даже если вы выберете «debug» для этих модулей в меню «Варианты сборки».

Чтобы получить kapt к библиотечным модулям и запустить их, у вас есть три варианта:

  1. В окне «Build Variants» выберите «release» для библиотечного модуля, содержащего ваш аннотированный код. Это скажет Android Studio, чтобы получить выход kapt внутри generated/sources/kapt/release/ .

  2. В ваших библиотечных модулях build.gradle задает defaultPublishConfig для debug (и сохранить выбранный вариант при отладке тоже). Это позволит плагину Android Gradle скомпилировать вариант библиотеки debug вместо стандартной release по умолчанию.

     android { defaultPublishConfig "debug" } 
  3. Вы также можете опубликовать оба варианта сборки debug и release и одновременно, установив для publishNonDefaults значение true . В основном модуле приложения вы можете дважды ссылаться на библиотечный модуль для конфигураций debugCompile и releaseCompile . Однако обратите внимание, что это всегда будет строить оба типа, даже если вам нужны только источники отладки во время сборки, практически удваивая время компиляции.