2016-11-08 9 views
4

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

Аннотация процессор баночка соединен таким образом:

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 \ выпуск, и не отлаживать папку, независимо от варианта сборки.

enter image description here

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

+0

У вас есть решение этого вопроса? Удар по той же проблеме. –

+0

@ david.schreiber проблема с папкой была «решена» с использованием процессора только в прикладном модуле. Проблема с обновлениями файлов осталась. Вы используете kotlin 1.0.6, возможно, они исправили эти проблемы в kapt? – Ufkoku

+0

У меня также были проблемы с библиотечными модулями, но после анализа выходов градиентов я заметил, что были созданы только источники релиза.Причина этого в том, что по умолчанию библиотечные модули будут публиковать только артефакты выпуска: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-Publication Я добавил свой ответьте на этот вопрос. –

ответ

2

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

Build variants window

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

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

  1. В «Build Варианты» окно, выберите «освобождение» для модуля библиотеки, содержащей ваш аннотированный код. Это скажет 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. Однако обратите внимание, что это будет всегда Создайте оба типа, хотя вам могут потребоваться только источники отладки во время сборки, практически удваивая время компиляции.

 Смежные вопросы

  • Нет связанных вопросов^_^