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

flvtvl50  于 2022-11-14  发布在  Android
关注(0)|答案(3)|浏览(222)

我有一个包含dependencies { classpath 'com.android.tools.build:gradle:0.13.3'}apply plugin: 'com.android.application'build.gradle文件。
当我进行调试构建时,我得到:

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编译选项的内容没有帮助。

mitkmikd

mitkmikd1#

我尝试了由@Konrad Jamrozik提出的解决方案,但由于我的项目中的味道,它不适用于我的项目。
考虑到我们只是打开了额外的警告,而不是显著改变编译器操作方式的东西,我不认为它会被添加到发布版本和调试版本中是一个问题。因此,这个答案有一个更干净的方法,可以与各种风格一起工作:How to add -Xlint:unchecked to my Android Gradle based project?
在我的例子中,将以下内容添加到受影响模块的build.gradle文件:

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

ctrmrzij2#

我根据Gradle插件用户指南中的任务操作和Gradle DSL doc about JavaCompile找到了以下解决方案:
添加到build.gradle

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

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

huus2vyu

huus2vyu3#

将以下内容添加到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'
      }
   }
}

相关问题