2016-08-12 3 views
20

Я использую Android Studio 2.2 Preview 7, и плагин Lombok внезапно начал говорить: Annotation processing seems to be disabled for the project X и предоставляет ссылку на настройки.Ломбок требует обработки аннотации

enter image description here

При нажатии на уведомление не принимает меня в нужное место.

Какое исправление для этого?

ответ

52

Настройки, открытые нажатием на уведомление, - это настройки Per Project, и это не то, что вам нужно в этом случае.

Чтобы это исправить, перейдите

  • File->Other Settings->Default Settings
  • Развернуть Build, Execution, Deployment
  • Expand Compiler
  • В Annotation Processors проверки Enable annotation processing
  • Вы, возможно, потребуется повторно открыть проект для получения настроек для вступления в силу.
  • Наслаждайтесь

Для получения полной справки - скриншот с экрана соответствующие параметры: enter image description here

+14

Это только работали после я удалил проект из списка последнего (что показывает при запуске AS), а затем повторно добавить его. – AndroidDev

+10

Чтобы быть полностью уверенным: закройте проект. Удалите проект из диалогового окна «Добро пожаловать в Android-студию» (нажмите X). Нажмите «Настроить» в правом нижнем углу и включите обработку аннотаций, как описано выше. Откройте существующий проект Android еще раз. Описанный в этом ответе http://stackoverflow.com/a/38698186/1666063 –

+0

Изменение настроек по умолчанию имеет нулевой эффект, если вы не создаете новый проект. Настройки уже записаны в .idea/И удаление вашего проекта с экрана приветствия ничего не делает для него. (Да, я попробовал.Он имел нулевой эффект.Тогда я понял, что это даже не имеет смысла. :) /peace –

11

Во-первых, я не думаю, что удаление проекта с экрана приветствия может иметь какой-либо эффект. Подумайте об этом, удалив ваш проект из «недавних проектов» на этом экране, он не воссоздает его, как можно изменить настройки по умолчанию на существующего проекта?

Чтобы включить обработку аннотаций в существующем проекте, вам ничего не нужно удалять. Перейдите к YourAwesomeProject/.idea/compiler.xml и убедитесь, что у вас есть значение «true» в следующем атрибуте: /project/annotationProcessing/[email protected].

Как это:

<?xml version="1.0" encoding="UTF-8"?> 
<project version="4"> 
    <component name="CompilerConfiguration"> 
    ... 
    <annotationProcessing> 
     <profile default="true" name="Default" enabled="true"><!-- here --> 
     <processorPath useClasspath="true" /> 
     </profile> 
    </annotationProcessing> 
    </component> 
</project> 

Вам может понадобиться Файл -> Invalidate кэшей/Restart

+1

Пробовал это и думал, что это работает, но это не так. Упростили это, а также идею настройки параметров компилятора, но, похоже, данные хранятся в кеше. –

+0

@EmanuelSeibold вопрос о кешах хороший, обновленный ответ –

+0

Использование и @EmanuelSeibold, и этот ответ исправил мою проблему –

6

Для тех, кто имеет такую ​​же проблему, используя Android Studio 2.4+ его не решается делать никаких намеков выше, за исключением ответа Яниса Пейсениекса.

Откройте свою Intellij IDEA 2017/Android Studio 2.4+ и перейти к (Windows)

  1. File-> Другие Настройки-> Настройки по умолчанию
  2. Раскрыть сборки, Execution, развертывание
  3. Expand Компилятор и выберите аннотаций процессоры
  4. Удостоверьтесь, что у вас есть Включить обработку аннотаций и «Получить процессоры из класса объектов проекта» включен
  5. Последнее, но не менее важное: обновите свои проекты build.gradle с помощью фрагмента ниже. Игнорируйте намек на то, что его устарели, поскольку он не используется (до сих пор. См. issue).

    defaultConfig { 
        javaCompileOptions { 
         annotationProcessorOptions { 
          includeCompileClasspath = true 
         } 
        } 
    } 
    

Найдено, что есть очень простой способ сделать это без всех этих изменений выше!

Если установить процессор в Gradle как Ломбок вы не только использовать при условии или testCompile. Вы должны добавить это, используя annotationProcessor, а также в свои зависимости. Пример:

dependencies { 
    provided "org.projectlombok:lombok:1.16.16" 
    annotationProcessor "org.projectlombok:lombok:1.16.16" 
} 

Благодарим Jack Wharton за масляный нож, где я понял, как он его решил.

Подсказка: Вам может потребоваться аннулировать кеш и перезапустить, чтобы заставить его работать для некоторых обработчиков аннотаций, таких как lombok.

+0

Приобретено для второй половины вашего ответа, возиться с настройками, которые используются для вновь созданных проектов, не имеет смысла. IMO :)/мир и спасибо за то, что снова о кэшах –

+0

приветствую ;-) –

9

С новыми Gradle версий, достаточно ввести эти строки в зависимости build.gradle для приложения в блок: `

compile "org.projectlombok:lombok:1.16.16" 
annotationProcessor "org.projectlombok:lombok:1.16.16" 

Синхронизировать проект с Gradle и он будет работать.

+1

Это работало безупречно для меня на Android STudio 3.0 Canary 4, gradle-4.0-rc-1 –

0

Следовать, что установка руководство говорит:

Gradle Убедитесь, что версия вашего андроида плагин> = 0.4.3 Используйте Gradle-Ломбок плагин. Если вы не хотите использовать плагин, добавить Ломбок зависимостей блока вашего приложения (требуется Gradle v2.12 или новее):

dependencies {  
compileOnly "org.projectlombok:lombok:1.16.18" 
} 

Android Студия Следуйте предыдущие инструкции (Gradle). Кроме того к настройке Gradle проекта правильно, вам нужно добавить Ломбок IntelliJ плагин для добавления Ломбок поддержку Android Studio:

  1. Перейти в меню Файл> Настройки> Плагины
  2. Нажмите Обзор репозиториев .. ,
  3. Поиск Ломбок Plugin
  4. Нажмите на Установить плагин Restart Android Studio

https://projectlombok.org/setup/android

0

Вероятно отмечен ответ был достаточно в то время, но я боролся немного с андроид студии 3 и lombot 1.16 +0,18. В любом случае следующие работал для меня

в app>build.gradle добавить следующие

compileOnly 'org.projectlombok:lombok:1.16.18' 
annotationProcessor 'org.projectlombok:lombok:1.16.18' 

вы можете начать получать другие ошибки, так что если вы в ваших MyApplication>lombok.config оных следующие строки

lombok.addGeneratedAnnotation = false 
lombok.anyConstructor.suppressConstructorProperties = true 

, если вы не» т lombok.config только что добавил

Выше предложено е разработчик Ломбок в следующих постах
addGeneratedAnnotation
suppressConstructorProperties