使用Android Gradle插件编译时如何添加java编译器选项?

使用Android Gradle插件编译时如何添加java编译器选项?,java,gradle,android-gradle-plugin,build.gradle,Java,Gradle,Android Gradle Plugin,Build.gradle,我有一个build.gradle文件,其中包含依赖项{classpath'com.android.tools.build:gradle:0.13.3'}和apply插件:'com.android.application' 当我进行调试构建时,我得到: gradle clean assembleDebug :myapp:preBuild (...) :myapp:compileDebugJava Note: C:\path\to\MyClass.java uses unchecked or uns

我有一个
build.gradle
文件,其中包含
依赖项{classpath'com.android.tools.build:gradle:0.13.3'}
apply插件:'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
添加到基础任务?这是无益的

我根据和找到了以下解决方案:

添加到
build.gradle

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

在Gradle的配置阶段,应用程序变量为
null
,并且所需的
JavaCompile
任务也不存在,因此我在执行阶段进行修改。

我尝试了@Konrad Jamrozik提出的解决方案,但由于我的项目的风格,它不适用于我的项目

考虑到我们只是打开额外的警告,而不是显著改变编译器运行方式的东西,我不认为它将被添加到发布版和调试版中是一个问题。因此,这个答案有一个更干净的方法,适用于口味:

在我的例子中,将其添加到受影响模块的build.gradle文件:

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

options.compilerArgs将其添加到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'
   }
}

android{//在哪个build.gradle文件和该文件的哪个部分?@Andrew threre有两个gradle文件:“项目级别”和“应用级别”。只有“应用级别”应该应用
com.android.application
插件,这就是我的意思。你必须直接将其添加到文件中,而不是任何部分(preBuild{
的缩进深度为0)似乎不起作用。我的modules build.gradle文件的顶部看起来像:apply plugin:'com.android.application'
preBuild{doFirst{JavaCompile jc=android.applicationVariants.find{it.name='debug'}.javaCompile jc.options.compilerArgs=[“-Xlint:deprecated”]}android{它会随着:任务执行失败:':GrampingGuide:preBuild.'>无法在null对象上获取属性'javaCompile'。嗯,
不在文件中,但是StackExchange不允许我插入换行符,现在也不允许我删除将它们放入的尝试。是的,我可以很好地组装东西,但我有一些风格,所以我正在构建assemble[flavor]Debug而不是assembleDebug。Will稍微修改一下我想出了一些对我有用的东西。我没有匹配特定的味道,而是在所有变体上启用了标志。请看我的答案。现在我想知道如何让它忽略@SuppressWarnings(“弃用”)中的弃用.这回答了你的问题吗?