【问题标题】:Use Xlint:deprecation with android使用 Xlint:deprecation 与 android
【发布时间】:2011-12-02 16:29:33
【问题描述】:

所以当我编译我的安卓应用程序时,我几乎总是会收到这样的消息:

[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 中编辑某些内容?

【问题讨论】:

标签: java android build deprecated


【解决方案1】:

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

ant "-Djava.compilerargs=-Xlint:unchecked -Xlint:deprecation" debug

启用所有 Lint 警告:

ant -Djava.compilerargs=-Xlint debug

【讨论】:

  • 谢谢。很好的建议。
【解决方案2】:

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

java.compilerargs=-Xlint:unchecked

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

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

【讨论】:

    【解决方案3】:

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

    - 只自定义一个目标: - 将目标复制/粘贴到此文件中,*之前* 任务。 - 根据您的需要定制它。

    这意味着:

    1. 转到 $ANDROID_SDK_ROOT/tools/ant/main_rules.xml 文件并复制“编译”目标。

    2. 将其粘贴到您的 build.xml 文件中 任务之前。

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

      <compilerarg value="-Xlint:deprecation"/>
      
    4. 同样,您可以添加其他编译器选项,例如用于未检查的操作:

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

    【讨论】:

    • 太棒了。我回家后会试试这个,可能会投票并接受你的回答。
    【解决方案4】:

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

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

    就在文件底部的import 行之前。

    【讨论】:

      【解决方案5】:

      如果您想拥有一个良好的 CI + CD 管道并且您关心您的代码质量,显示有关 lint 抱怨的更多信息的一个不错的选择是将其添加到您的 top/root gradle.build:

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

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

      如果您只想添加一个选项(通常会添加更多),在任务JavaCompile 中您只需添加:

      options.compilerArgs << "-Xlint:unchecked"
      

      现在是 2018 年,您可以依靠 Gradle 进行设置。我只添加了两个编译器参数选项,但还有更多。您可以找到更多信息herehere

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-28
        • 2021-06-24
        相关资源
        最近更新 更多