Java 使用Xlint:android的弃用

Java 使用Xlint:android的弃用,java,android,build,deprecated,Java,Android,Build,Deprecated,因此,当我编译android应用程序时,我几乎总是收到这样的信息: [javac] Note: /home/kurtis/sandbox/udj/androidApp/src/org/klnusbaum/udj/PlaylistFragment.java uses or overrides a deprecated API. [javac] Note: Recompile with -Xlint:deprecation for details. 如何使用此选项重新编译?我必须在build.xm

因此,当我编译android应用程序时,我几乎总是收到这样的信息:

[javac] Note: /home/kurtis/sandbox/udj/androidApp/src/org/klnusbaum/udj/PlaylistFragment.java uses or overrides a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.

如何使用此选项重新编译?我必须在build.xml中编辑某些内容吗?

是的,根据build.xml文件中下面的语句,如果您想

- Customize only one target: - copy/paste the target into this file, *before* the <setup/> task. - customize it to your needs. -仅自定义一个目标: -将目标复制/粘贴到此文件中,*在*之前 任务 -根据您的需要定制它。 这意味着:

  • 转到$ANDROID_SDK_ROOT/tools/ant/main_rules.xml文件并复制“compile”目标

  • 在执行任务之前,将其粘贴到build.xml文件中

  • 然后将以下元素添加到任务中:

    <compilerarg value="-Xlint:deprecation"/>
    
    
    
  • 同样,您也可以添加其他编译器选项,例如未选中的操作:

    <compilerarg value="-Xlint:unchecked"/>
    
    
    

  • 看起来您应该能够在项目文件夹根目录中的
    build.properties
    ant.properties
    中指定该选项。我试过这个,但似乎不起作用。 我希望避免编辑我的
    build.xml
    文件,因为如果以后需要更新项目,这会增加复杂性。然而,我却找不到一个解决办法。但是,我没有复制整个
    compile
    target,而是添加了:

    <property name="java.compilerargs" value="-Xlint:unchecked" />
    
    
    

    就在文件底部的
    导入
    行之前。

    这些属性也可以在Ant命令行上定义,避免编辑:

    ant“-Djava.compilerargs=-Xlint:unchecked-Xlint:deprecation”调试

    要启用所有林特警告,请执行以下操作:


    ant-Djava.compilerargs=-Xlint debug

    更简单,无需复制完整的javac目标:在ant.properties文件中放入以下行:

    java.compilerargs=-Xlint:unchecked
    
    这样,它只会覆盖Android SDK默认构建配置中的java.compilerargs。(顺便说一句,您可以自己检查它默认为空)。SDK更新不会导致在不通知项目的情况下更改默认javac目标的混乱


    只是一种更精细的方法而已!:)

    如果您希望有一个好的CI+CD管道,并且您关心自己的代码质量,那么向top/root gradle.build添加以下内容是显示有关lint投诉的更多信息的一个好方法:

    subprojects {
      gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
          options.compilerArgs += [
            '-Xlint:unchecked', // Shows information about unchecked or unsafe operations.
            '-Xlint:deprecation', // Shows information about deprecated members.
          ]
        }
      }
    }
    


    现在是2018年,你可以依靠Gradle来完成这项工作。我只添加了两个编译器参数选项,但还有更多。您可以找到更多信息和信息。

    太棒了。我回家后会试试这个,可能会投票接受你的答案。谢谢。非常好的建议。如果使用Gradle而不是Ant,请参阅
    subprojects {
      gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
          options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
        }
      }
    }
    
    options.compilerArgs << "-Xlint:unchecked"