Home » Android » How to add -Xlint:unchecked to my Android Gradle based project?

How to add -Xlint:unchecked to my Android Gradle based project?

Posted by: admin November 29, 2017 Leave a comment

Questions:

I tried to add the following to the root build.gradle file:

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

But I’m getting this:

FAILURE: Build failed with an exception.

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

What am I doing wrong?

Answers:

This is what worked for me:

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

Questions:
Answers:

According to JavaCompile, the following seems to be solution:

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

If you want it to have for the test cases, use compileTestJava

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

Questions:
Answers:

I had a different compilation argument to set. The following works for me.

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

You have to set the boot classpath for JDK 1.8 and above for things like Unsafe and sun.swing.* classes. Fix the source code especially for the latter, because Jigsaw Java 9, the up and coming modularity implementation for the JRE, will finally make these methods inaccessible(!). Consider yourself warned.