Несовместимые плагины для android-apt после обновления до Android Studio 2.3

После обновления с 2.2 до 2.3 вижу это предупреждение

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

и когда я пытаюсь скомпилировать проект, я вижу эту ошибку компиляции

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

Как я могу решить эту проблему, не переходя на предыдущую версию Gradle? Есть ли обновление android-apt, которое может решить эту проблему?


person Bronx    schedule 03.03.2017    source источник


Ответы (5)


Плагин android-apt устарел.
Ознакомьтесь с руководством по миграции. :

Начиная с версии 2.2 подключаемого модуля Android Gradle, все функции, ранее предоставляемые android-apt, теперь доступны в подключаемом модуле Android.

Вы можете удалить android-apt, следуя руководству по миграции, чтобы получить эквивалентные функции.

Важные части руководства по миграции:

  • Убедитесь, что вы используете подключаемый модуль Android Gradle 2.2 или новее.
  • Удалите плагин android-apt из ваших скриптов сборки.
  • Измените все зависимости apt, androidTestApt и testApt на их новый формат:
dependencies {
   compile 'com.google.dagger:dagger:2.0'
   annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
}

Также в плагине Android Gradle есть явная проверка для этого, что вы и видите:

использование несовместимых плагинов для обработки аннотаций android-apt

Будущие версии плагинов Android Gradle не будут совместимы с тем, как работает android-apt, что и является причиной этой проверки.

person Gabriele Mariotti    schedule 03.03.2017
comment
Спасибо! Я не знал, что apt устарел. - person Bronx; 03.03.2017
comment
И в плагине Android Gradle у Google есть явная проверка, что вы и видите. Будущие версии Android Gradle не будут совместимы с тем, как работает android-apt, что и является причиной этой проверки. - person botteaap; 04.03.2017
comment
где чек? - person ericn; 11.04.2017
comment
У меня нет никаких apt, но я все равно получаю это предупреждение. РЕДАКТИРОВАТЬ: Оказывается, это было царство - person behelit; 28.03.2018
comment
Я нигде не видел NDROID-pt в своем коде, но получаю ошибку. В чем может быть проблема? - person Mubashar; 23.04.2018
comment
У меня тоже такая же проблема. Даже я не использую ничего из того, что принадлежит apt. но @Mubashar, как он сказал, я прокомментировал применение подключаемого модуля для области, это сработало для меня. Теперь код компилируется. Но это еще не все. Разве мы не можем использовать область? - person Abdul Waheed; 15.11.2018

Что касается меня, у меня возникла эта ошибка при использовании библиотеки Contentful Vault, которая указывает, что вы включаете:

apply plugin: 'com.neenbedankt.android-apt'

и

compile 'com.contentful.vault:core:2.1.0'
apt 'com.contentful.vault:compiler:2.1.0'

Что вам нужно сделать, это УДАЛИТЬ apply plugin: 'com.neenbedankt.android-apt'

а затем ИЗМЕНИТЬ:

compile 'com.contentful.vault:core:2.1.0'
apt 'com.contentful.vault:compiler:2.1.0'

to

annotationProcessor 'com.contentful.vault:compiler:2.1.0'
annotationProcessor 'com.contentful.vault:core:3.0.1'

Вы всегда можете проверить последние версии на https://github.com/contentful/vault.

person Ojonugwa Jude Ochalifu    schedule 02.11.2017

  1. Удалить подходящий плагин

  2. Сдача:

    способный -> скомпилировать

    testApt -> testAnnotationProcessor

    androidTestApt -> androidTestAnnotationProcessor

  3. В вашем build.gradle (приложении) добавьте в defaultConfig:

vectorDrawables.useSupportLibrary = истина

person Octavian Ionel    schedule 22.01.2018

Совмещение с @Gabriele Mariotti здесь, так как его ответ довольно точен и подразумевает это, но не заявляет об этом. Gradle также не предлагает это как допустимый вариант, хотя это тоже так. Эквивалентом тестирования для androidTestApt и testApt является androidTestAnnotationProcessor и testAnnotationProcessor.

Пример:

testApt "com.google.dagger:dagger-compiler:$daggerVersion"
androidTestApt "com.google.dagger:dagger-compiler:$daggerVersion"

Следует изменить на

testAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
person superuserdo    schedule 31.10.2017

В случае, если у процессора аннотаций есть аргументы, может также потребоваться изменить это:

apt {
    arguments {
        KEY "VALUE"
    }
}

к этому:

android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ['KEY': 'VALUE']
            }
        }
    }
}
person jox    schedule 23.02.2018