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

101

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

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

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

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

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

Бронкс
источник

Ответы:

180

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работы, что является причиной этой проверки.

Габриэле Мариотти
источник
Спасибо! Я не знал, что apt устарел.
Бронкс
1
А в плагине Android Gradle у Google есть явная проверка на это, что вы и видите. Будущие версии Android Gradle не будут совместимы со способом android-aptработы, что является причиной этой проверки.
botteaap
где чек?
ericn
У меня нет подходящих, но я все равно получаю это предупреждение. РЕДАКТИРОВАТЬ: Оказывается, это было царство
behelit
Я нигде не видел NDROID-pt в своем коде, но получаю ошибку. В чем может быть проблема?
Мубашар
47

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

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'

к

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

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

Оджонугва Джуд Очалифу
источник
15
  1. Удалить плагин apt

  2. Изменить:

    apt -> компилировать

    testApt -> testAnnotationProcessor

    androidTestApt -> androidTestAnnotationProcessor

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

vectorDrawables.useSupportLibrary = true

Октавиан Ионел
источник
6

Копирование на @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"
суперпользователь
источник
1

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

apt {
    arguments {
        KEY "VALUE"
    }
}

к этому:

android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ['KEY': 'VALUE']
            }
        }
    }
}
Jox
источник