Complementos incompatibles para android-apt después de actualizar a Android Studio 2.3

101

Después de actualizar de 2.2 a 2.3, veo esta advertencia

ingrese la descripción de la imagen aquí

y cuando intento compilar el proyecto, veo este error de compilación

ingrese la descripción de la imagen aquí

¿Cómo puedo resolver este problema sin cambiar a una versión anterior de Gradle? ¿Hay alguna actualización de android-apt que pueda resolver este problema?

Bronx
fuente

Respuestas:

179

El android-aptcomplemento ha quedado obsoleto .
Consulte aquí la guía de migración :

A partir de la versión 2.2 del complemento de Android Gradle, todas las funciones que anteriormente proporcionaba android-apt ahora están disponibles en el complemento de Android.

Puede eliminar android-aptsiguiendo la guía de migración para obtener las funcionalidades equivalentes.

Las partes importantes de la guía de migración :

  • Asegúrate de estar en el complemento de Android Gradle 2.2 o más reciente.
  • Elimina el android-aptcomplemento de tus scripts de compilación
  • Cambiar todos apt, androidTestApty testAptdependencias a su nuevo formato:
dependencies {
   compile 'com.google.dagger:dagger:2.0'
   annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
}

También en el complemento de Android Gradle hay una verificación explícita para esto, que es lo que está viendo:

usando complementos incompatibles para el procesamiento de anotaciones android-apt

Las futuras versiones del complemento de Android Gradle no serán compatibles con la forma en que android-aptfunciona, que es el motivo de esa verificación.

Gabriele Mariotti
fuente
¡Gracias! No sabía que apt estaba obsoleto.
Bronx
1
Y en el complemento de Android Gradle, Google tiene una verificación explícita, que es lo que está viendo. Las futuras versiones de Android Gradle no serán compatibles con la forma en que android-aptfunciona, que es el motivo de esa comprobación.
Botteaap
donde esta el cheque?
ericn
No tengo ningún apt pero sigo recibiendo esta advertencia. EDITAR: Resulta que era reino
behelit
No vi NDROID-pt en mi código en ninguna parte, pero recibí un error. ¿Cuál podría ser el problema?
Mubashar
47

Para mí, estaba teniendo este error mientras usaba la Vaultbiblioteca de Contentful que especifica que incluye:

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

y

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

Lo que debes hacer es BORRAR apply plugin: 'com.neenbedankt.android-apt'

y luego CAMBIAR :

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

a

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

Siempre puede consultar https://github.com/contentful/vault para obtener las últimas versiones

Ojonugwa Jude Ochalifu
fuente
15
  1. Eliminar el complemento apt

  2. Cambio:

    apt -> compilar

    testApt -> testAnnotationProcessor

    androidTestApt -> androidTestAnnotationProcessor

  3. En su build.gradle (aplicación), agregue a defaultConfig:

vectorDrawables.useSupportLibrary = true

Octavio Ionel
fuente
6

Aprovechando a @Gabriele Mariotti aquí, ya que su respuesta es bastante acertada e implica esto, pero no lo dice. Gradle tampoco sugiere que esto sea una opción válida, aunque también lo es. El equivalente de prueba para androidTestApty testAptes androidTestAnnotationProcessory testAnnotationProcessor.

Ejemplo:

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

Debería cambiarse a

testAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
superusuario
fuente
1

En caso de que el procesador de anotaciones tenga argumentos, es posible que también deba cambiar esto:

apt {
    arguments {
        KEY "VALUE"
    }
}

a esto:

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