web-dev-qa-db-fra.com

Définition du processeur d'annotation explicite

J'essaie d'ajouter un référentiel Maven à mon projet Android Studio . Lorsque je synchronise un projet Gradle, tout va bien. Cependant, chaque fois que j'essaie de construire mon apk, j'obtiens cette erreur:

Execution failed for task ':app:javaPreCompileDebug'.
> Annotation processors must be explicitly declared now.  The following dependencies on 
the compile classpath are found to contain annotation processor.  Please add them to 
the annotationProcessor configuration.
 - classindex-3.3.jar
Alternatively, set Android.defaultConfig.javaCompileOptions.annotationProcessorOptions
.includeCompileClasspath = true to continue with previous behavior.  Note that this 
option is deprecated and will be removed in the future.
See https://developer.Android.com/r/tools/annotation-processor-error-message.html for more details.

Le lien inclus ( https://developer.Android.com/r/tools/annotation-processor-errormessage.html ) dans l’erreur 404s est donc inutile. 

J'ai activé le traitement des annotations dans les paramètres du studio Android et ajouté includeCompileClasspath = true à mes options de traitement des annotations. J'ai également essayé d'ajouter classindex, classindex-3.3 et classindex-3.3.jar au nom de FQ du processeur, mais cela n'a pas aidé non plus.

ce sont les lignes que j'ai ajoutées au build.gradle par défaut sous dependecies:

dependencies {
    ...
    compile group: 'com.skadistats', name: 'clarity', version:'2.1.1'
    compile group: 'org.atteo.classindex', name: 'classindex', version:'3.3'
}

À l'origine, je n'avais ajouté que la «clarté», parce que c'est celle qui m'importait, mais j'ai ajouté l'entrée «classindex» dans l'espoir que cela résoudrait le problème. Supprimer "clarté" et conserver "classindex" me donne exactement la même erreur. 

Je ne connais pas trop Gradle/Maven, toute aide serait la bienvenue.

50
wmrice

Pour corriger l'erreur, modifiez simplement la configuration de ces dépendances pour utiliser annotationProcessor. Si une dépendance inclut des composants qui doivent également figurer sur le chemin de classe de compilation, déclarez cette dépendance une seconde fois et utilisez la configuration de dépendance de compilation.

Par exemple:

annotationProcessor 'com.jakewharton:butterknife:7.0.1'
compile 'com.jakewharton:butterknife:7.0.1'

Ce lien le décrit en détail: https://developer.Android.com/studio/preview/features/new-Android-plugin-migration.html#annotationProcessor_config

Snippet pertinent inclus pour la complétude.

Utiliser la configuration de dépendance du processeur d'annotation

Dans les versions précédentes du plugin Android pour Gradle, les dépendances sur les classpath de compilation ont été automatiquement ajoutés au processeur classpath. En d’autres termes, vous pouvez ajouter un processeur d’annotation au fichier compiler classpath et cela fonctionnerait comme prévu. Cependant, cela provoque un impact significatif sur les performances en ajoutant un grand nombre de dépendances inutiles au processeur.

Lors de l'utilisation du nouveau plugin, des processeurs d'annotation doivent être ajoutés au fichier chemin de classe du processeur utilisant la dépendance annotationProcessor configuration, comme indiqué ci-dessous:

dépendances { ... annotationProcessor 'com.google.dagger: dagger-compiler:'}

Le plugin suppose qu'une dépendance est un processeur d'annotation si son JAR Le fichier contient le fichier suivant: META - INF/services/javax.annotation.processing.Processor. Si le plugin détecte les processeurs d'annotation sur le chemin de classe de compilation, votre construction échoue et vous obtenez un message d'erreur qui répertorie chaque annotation processeur sur le classpath de compilation. Pour corriger l'erreur, changez simplement la configuration de ces dépendances pour utiliser annotationProcessor. Si une dépendance inclut des composants qui doivent également figurer sur la compilation classpath, déclarez cette dépendance une deuxième fois et utilisez la compilation configuration de dépendance.

78
Snowman

J'étais avec une erreur similaire. Je suis les instructions sur le lien Google et cela fonctionne.

essayez d’ajouter les instructions suivantes à votre fichier de classement d’application:

defaultConfig {
    applicationId "com.yourdomain.yourapp"
    minSdkVersion 17
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"

    javaCompileOptions {
        annotationProcessorOptions {
            includeCompileClasspath false
        }
    }
}

Attention to -> includeCompileClasspath false

28
luizMello

Ajoutez ce code à votre application Gradle

defaultConfig{
    javaCompileOptions {
        annotationProcessorOptions {
            includeCompileClasspath true
        }
    }
}

J'ai trouvé la solution ici https://github.com/JakeWharton/butterknife/issues/908

20
Amirouche Zeggagh

Il suffit de mettre à jour votre couteau à beurre avec le processeur Annotation

compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

j'espère que ça t'aide

11
Mohamed Hussien

Ajouter ceci dans defaultConfig 

Android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true

3
Tushar Ahmed

Dans le build.gradle (application du module)

  1. appliquer le plugin:

     apply plugin: 'com.jakewharton.butterknife'
    
  2. Ajoutez les lignes suivantes dans la section des dépendances:

     annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0'
     implementation 'com.jakewharton:butterknife:8.7.0'
    

dans le build.gradle (Project: nomProjet), ajoutez le classPath dans les dépendances comme ceci:

    classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'

Cela résoudra ce problème . Au cas où sinon ajouter maven:

 maven {
 url 'https://maven.google.com'
 }
2
yahme3

Si vous avez des dépendances sur le chemin de classe de compilation qui incluent des processeurs d'annotation dont vous n'avez pas besoin, vous pouvez désactiver le contrôle d'erreur en ajoutant les éléments suivants à votre fichier build.gradle. N'oubliez pas que les processeurs d'annotation que vous ajoutez au chemin de classe de compilation ne sont toujours pas ajoutés au chemin de classe de processeur.

 Android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath false
            }
        }
    }
}

Si vous rencontrez des problèmes pour migrer vers la nouvelle stratégie de résolution des dépendances, vous pouvez rétablir le comportement sur celui du plug-in Android 2.3.0 en définissant includeCompileClasspath true. Toutefois, la restauration du comportement vers la version 2.3.0 n'est pas recommandée et l'option de le faire sera supprimée lors d'une prochaine mise à jour.

Voir ici https://developer.Android.com/r/tools/annotation-processor-error-message.html pour plus de détails.

0
Mohsin Bagwan

Si rien ne fonctionne, les réponses ci-dessus ajoutent également l'étape suivante, spécialement pour la nouvelle mise à jour d'Android Studio 3.0.1:

Android Studio 3.0.1:

Ajoutez ceci à votre fichier app.gradle dans les dépendances:

classpath 'com.neenbedankt.gradle.plugins:Android-apt:1.8'
0
Shahid Aslam

Dans les versions précédentes du plugin, les dépendances sur le chemin de classe de compilation étaient automatiquement ajoutées au chemin de classe du processeur. C'est-à-dire que vous pourriez ajouter un processeur d'annotation au chemin de la compilation et qu'il fonctionnerait comme prévu. Cependant, cela a un impact significatif sur les performances en ajoutant un grand nombre de dépendances inutiles au processeur.

Lorsque vous utilisez le plug-in Android 3.0.0, vous devez ajouter des processeurs d'annotation au chemin de classe du processeur à l'aide de la configuration de dépendance annotationProcessor, comme indiqué ci-dessous:

dependencies { ... annotationProcessor 'com.google.dagger:dagger-compiler:<version-number>' implementation 'com.google.dagger:dagger-compiler:<version-number>' }

0
Scott