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

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

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

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

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

Для меня, у меня была эта ошибка при использовании Contentful's 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'

в

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

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

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

  2. Изменить:

    apt -> compile

    testApt -> testAnnotationProcessor

    androidTestApt -> androidTestAnnotationProcessor

  3. В вашем build.gradle (app) добавьте в defaultConfig:

vectorDrawables.useSupportLibrary = true

Перепутывание на @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"

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

apt {
    arguments {
        KEY "VALUE"
    }
}

к этому:

android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ['KEY': 'VALUE']
            }
        }
    }
}
Другие вопросы по тегам