web-dev-qa-db-fra.com

Comment ajouter des options de compilateur Java lors de la compilation avec Android Gradle Plugin?

J'ai un fichier build.gradle avec dependencies { classpath 'com.Android.tools.build:gradle:0.13.3'} et apply plugin: 'com.Android.application'.

Quand je fais un build de débogage je reçois:

gradle clean assembleDebug
:myapp:preBuild
(...)
:myapp:compileDebugJava
Note: C:\path\to\MyClass.Java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

:myapp:preDexDebug
(...)
:myapp:assembleDebug

BUILD SUCCESSFUL

Comment puis-je ajouter le -Xlint:unchecked à la tâche sous-jacente? Guide de l'utilisateur de Gradle Plugin sur les options de compilation Java est inutile.

19
Konrad Jamrozik

J'ai trouvé la solution suivante basée sur Guide de l'utilisateur du plug-in Gradle pour la manipulation de tâches et Doc DSL Gradle sur JavaCompile :

Ajouter à build.gradle:

preBuild {
    doFirst {
        JavaCompile jc = Android.applicationVariants.find { it.name == 'debug' }.javaCompile
        jc.options.compilerArgs = ["-Xlint:unchecked"]
    }
}

Les variantes de l’application sont null lors de la phase de configuration de Gradle et la tâche JavaCompile requise n’existe pas non plus. Par conséquent, je modifie plutôt la phase d’exécution.

5
Konrad Jamrozik

J'ai essayé la solution proposée par @Konrad Jamrozik mais cela n'a pas fonctionné avec mon projet en raison de la saveur de mon projet.

Étant donné que nous activons simplement des avertissements supplémentaires, sans que cela modifie considérablement le fonctionnement du compilateur, je ne vois pas d'inconvénient à ce qu'il soit ajouté aux versions release et debug. En tant que telle, cette réponse a une méthode de nettoyage qui fonctionne avec les saveurs: Comment ajouter -Xlint: décoché à mon projet basé sur Android Gradle?

Dans mon cas, en ajoutant ceci au fichier build.gradle du module concerné:

gradle.projectsEvaluated {
   tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
    }
}
24
Andrew

Ajoutez ceci à build.gradle file:

Android { // <---
   tasks.withType(JavaCompile) {
      configure(options) {
         options.encoding = 'UTF-8'
         options.debug = true
         options.failOnError = true
         options.warnings = true
         options.compilerArgs << '-Xlint:deprecation' << '-Xlint:unchecked'
   }
}
0
Yousha Aleayoub