Je suis confronté à un problème étrange en utilisant gradlew (4.10.2) + dagger (2.18).
Le problème est quand j'appelle:
./gradlew :app:compileDebugAndroidTestKotlin
La construction échoue avec:
Tâche: commune: compileDebugJavaWithJavac FAILED
/CommonModule_ProvidesGsonFactory.Java:6: erreur: le package javax.annotation.processing n'existe pas import javax.annotation.processing. Generated ;
/CommonModule_ProvidesGsonFactory.Java:8: erreur: impossible de trouver le symbole @ Généré (
Mais si j'exécute la tâche de Android Studio , la tâche réussit et le @Generated
n'est pas présent dans la classe générée par la dague.
Avez-vous des indices pour éviter le @Generated
annotation avec ./gradlew
?
Dagger utilise auto-common
GeneratedAnnotations
pour savoir quels @Generated
annotation à utiliser. Il le fait en fonction du chemin de classe.
Cela signifie que lorsque le processeur d'annotations est en cours d'exécution, javax.annotation.processing.Generated
est disponible et utilisé dans le générateur, mais lorsque le fichier résultant est compilé dans une autre tâche, il n'est plus sur le chemin de classe.
Les causes potentielles pourraient être que le code a été généré à l'aide d'une version plus récente du JDK et que la construction incrémentielle n'est pas valide, nécessitant un nettoyage et une reconstruction complets ou qu'il y a un problème avec Java niveaux de langue où le le processeur d'annotation fonctionne sur Java 9+, mais Android est compilé comme Java 8 ou inférieur).