Как добавить параметры компилятора java при компиляции с Android Gradle Плагин?

У меня есть файл build.gradle с dependencies { classpath 'com.android.tools.build:gradle:0.13.3'} и apply plugin: 'com.android.application'.

Когда я делаю сборку отладки, я получаю:

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

Как добавить -Xlint:unchecked в базовую задачу? Gradle Руководство пользователя плагинов по параметрам компиляции Java бесполезно.

Ответ 1

Я нашел следующее решение на основе Руководства пользователя Gradle Plugin по управлению задачами и документацией Gradle DSL о JavaCompile:

Добавить в build.gradle:

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

Варианты приложения являются null на этапе настройки Gradle, и требуемая задача JavaCompile также не существует, поэтому вместо этого я делаю изменение на этапе выполнения.

Ответ 2

Я попробовал решение, поставленное @Konrad Jamrozik, но он не работал с моим проектом из-за вкусов в моем проекте.

Учитывая, что мы просто включаем дополнительные предупреждения, а не то, что значительно меняет способ работы компилятора, я не вижу, что это проблема, которая будет добавлена ​​в сборку релизов и отладки. Таким образом, этот ответ имеет более чистый метод, который работает с ароматами: Как добавить -Xlint: не установлен в мой проект на базе Android Gradle?

В моем случае, добавив это в файл build.gradle затронутого модуля:

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

Ответ 3

Добавьте это в файл build.gradle:

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'
   }
}