Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I suppress warnings when compiling an android library with gradle?

In my application I have a library developed by a 3rd party that unfortunately contains quite a few lint and javac warnings. I'd like to ignore both these types of warnings since they can't be fixed by our team and they are polluting our build logs. I have tried adding the following to the libraries build.gradle file:

In the android block

lintOptions {     ignoreWarnings = true } 

I also added the following to the end of the build.gradle file:

afterEvaluate {     tasks.withType(JavaCompile) {          it.options.compilerArgs << "-Xlint:none" << "-nowarn"     } } 

Unfortunately, whenever ":compileDebugJavaWithJavac" runs, it still outputs the warnings from this project. What am I doing wrong?

EDIT Here is the build.gradle file in its entirety

apply plugin: 'com.android.library'  dependencies {     compile fileTree(dir: 'libs', include: '*.jar') }  android {     compileSdkVersion 21     buildToolsVersion "23.0.2"      lintOptions {        abortOnError false        // true by default        checkAllWarnings false        checkReleaseBuilds false        ignoreWarnings true       // false by default        quiet true                // false by default     }      sourceSets {         main {             manifest.srcFile 'AndroidManifest.xml'             java.srcDirs = ['src']             resources.srcDirs = ['src']             aidl.srcDirs = ['src']             renderscript.srcDirs = ['src']             res.srcDirs = ['res']             assets.srcDirs = ['assets']         }          // Move the tests to tests/java, tests/res, etc...         instrumentTest.setRoot('tests')          // Move the build types to build-types/<type>         // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...         // This moves them out of them default location under src/<type>/... which would         // conflict with src/ being used by the main source set.         // Adding new build types or product flavors should be accompanied         // by a similar customization.         debug.setRoot('build-types/debug')         release.setRoot('build-types/release')     } }  afterEvaluate {     tasks.withType(JavaCompile) {          it.options.compilerArgs << "-Xlint:none" << "-nowarn"     } } 

The following is an example of the warnings I am getting that I want to eliminate:

warning: [unchecked] unchecked call to isAssignableFrom(Class) as a member of the raw type Class if (type.isAssignableFrom(throwables[i].getClass()))

like image 595
Justin Breitfeller Avatar asked Dec 08 '15 05:12

Justin Breitfeller


People also ask

How do I get rid of warnings on Android?

Android Lint Warnings Mark Suppress Warnings For avoiding this problem, you need use annotation @SuppressWarnings. Using this annotation you can ignore all warnings, including Lint, Android, and other.

How do I stop a lint warning?

@SuppressLint("NewApi") Just invoke the quickfix for the warning, and one of the options will be to ignore the issue with an annotation; this will annotate either the local declaration, or the method, or the class, or the field, depending on the location of the error.


1 Answers

Lint:

Docs: http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.LintOptions.html#com.android.build.gradle.internal.dsl.LintOptions:ignoreWarnings

android {    lintOptions {       abortOnError false        // true by default       checkAllWarnings false       checkReleaseBuilds false       ignoreWarnings true       // false by default       quiet true                // false by default    } } 

Javac:

Docs: https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html

From the docs, list of all warnings:

Docs: https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html#BHCJCABJ

Java version:

$ java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) 

Also, warning options:

$ javac -X   -Xlint                     Enable recommended warnings   -Xlint:{all,auxiliaryclass,cast,classfile,deprecation,dep-ann,divzero,empty,fallthrough,finally,options,overloads,overrides,path,processing,rawtypes,serial,static,try,unchecked,varargs,-auxiliaryclass,-cast,-classfile,-deprecation,-dep-ann,-divzero,-empty,-fallthrough,-finally,-options,-overloads,-overrides,-path,-processing,-rawtypes,-serial,-static,-try,-unchecked,-varargs,none} Enable or disable specific warnings   -Xdoclint                  Enable recommended checks for problems in javadoc comments   -Xdoclint:(all|none|[-]<group>)[/<access>]          Enable or disable specific checks for problems in javadoc comments,         where <group> is one of accessibility, html, missing, reference, or syntax,         and <access> is one of public, protected, package, or private.   -Xbootclasspath/p:<path>   Prepend to the bootstrap class path   -Xbootclasspath/a:<path>   Append to the bootstrap class path   -Xbootclasspath:<path>     Override location of bootstrap class files   -Djava.ext.dirs=<dirs>     Override location of installed extensions   -Djava.endorsed.dirs=<dirs> Override location of endorsed standards path   -Xmaxerrs <number>         Set the maximum number of errors to print   -Xmaxwarns <number>        Set the maximum number of warnings to print   -Xstdout <filename>        Redirect standard output   -Xprint                    Print out a textual representation of specified types   -XprintRounds              Print information about rounds of annotation processing   -XprintProcessorInfo       Print information about which annotations a processor is asked to process   -Xprefer:{source,newer}    Specify which file to read when both a source file and class file are found for an implicitly compiled class   -Xpkginfo:{always,legacy,nonempty} Specify handling of package-info files   -Xplugin:"name args"       Name and optional arguments for a plug-in to be run   -Xdiags:{compact,verbose}  Select a diagnostic mode  These options are non-standard and subject to change without notice. 

Turn all warnings off:

// Put this in 'root' `build.gradle`, in allprojects or subprojects tasks.withType(JavaCompile) {      // Try to turn them all off automatically      options.compilerArgs << '-Xlint:none'      options.compilerArgs << '-nowarn' // same as '-Xlint:none'       // Turn them off manually      options.compilerArgs << '-Xlint:-auxiliaryclass'      options.compilerArgs << '-Xlint:-cast'      options.compilerArgs << '-Xlint:-classfile'      options.compilerArgs << '-Xlint:-deprecation'      options.compilerArgs << '-Xlint:-dep-ann'      options.compilerArgs << '-Xlint:-divzero'      options.compilerArgs << '-Xlint:-empty'      options.compilerArgs << '-Xlint:-fallthrough'      options.compilerArgs << '-Xlint:-finally'      options.compilerArgs << '-Xlint:-options'      options.compilerArgs << '-Xlint:-overloads'      options.compilerArgs << '-Xlint:-overrides'      options.compilerArgs << '-Xlint:-path'      options.compilerArgs << '-Xlint:-processing'      options.compilerArgs << '-Xlint:-rawtypes'      options.compilerArgs << '-Xlint:-serial'      options.compilerArgs << '-Xlint:-static'      options.compilerArgs << '-Xlint:-try'      options.compilerArgs << '-Xlint:-unchecked'      options.compilerArgs << '-Xlint:-varargs' } 
like image 101
Jared Burrows Avatar answered Oct 16 '22 13:10

Jared Burrows