146 votes

Comment ajouter -Xlint:unchecked à mon projet Android basé sur Gradle ?

J'ai essayé d'ajouter ce qui suit à la racine build.gradle fichier :

subprojects {
    gradle.projectsEvaluated {
        tasks.withType(Compile) {
            options.compilerArgs << "-Xlint:unchecked -Xlint:deprecation"
        }
    }
}

Mais je reçois ça :

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':Libraries:ActionBarSherlock:compileRelease'.
> invalid flag: -Xlint:unchecked -Xlint:deprecation

Qu'est-ce que je fais de mal ?

249voto

Felipe Lima Points 2346

C'est ce qui a marché pour moi : (dans le build.gradle de votre projet)

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

61voto

koppor Points 2066

Avis de non-responsabilité : Bien que cette réponse ait obtenu plus de 10 votes positifs, elle n'aborde pas le problème dans le contexte d'un système de gestion de la qualité. Android projet. Cependant, Google trouve cette question dans le contexte de projets non-Android. Je garde donc cette réponse pour ces personnes.

Selon JavaCompile la solution suivante semble être la bonne :

compileJava {
    options.encoding = 'UTF-8'
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

Si vous voulez qu'il ait pour les cas de test, utilisez compileTestJava

compileTestJava {
    options.encoding = 'UTF-8'
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

11voto

Dipali s. Points 2221

Pour tous ceux qui utilisent gradle.kts utilisez ce qui suit pour correspondre au simple build.gradle fichier

build.gradle.kts

afterEvaluate {
        tasks.withType(JavaCompile::class) {
            options.compilerArgs.add("-Xlint:unchecked")
            options.compilerArgs.add("-Xlint:deprecation")
        }
    }

build.gradle

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

8voto

Yousha Aleayoub Points 403

Mettez ceci dans votre build.gradle (répertoire racine) :

allprojects { // Projects
   gradle.projectsEvaluated {
      tasks.withType(JavaCompile) {
         options.encoding = 'UTF-8'
         options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
      }
   }
}

3voto

peter_pilgrim Points 459

J'avais un argument de compilation différent à mettre en place. Ce qui suit fonctionne pour moi.

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-XDignore.symbol.file"
        options.bootClasspath = "$System.env.JAVA_HOME/jre/lib/rt.jar"
    }
}

Vous devez définir le classpath de démarrage pour le JDK 1.8 et supérieur pour des choses comme les classes Unsafe et sun.swing.*. Corrigez le code source en particulier pour ces dernières, car Jigsaw Java 9, la future implémentation de la modularité pour le JRE, rendra finalement ces méthodes inaccessibles ( !). Considérez-vous comme prévenu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X