所以当我编译我的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中编辑某些内容?
答案 0 :(得分:23)
也可以在Ant命令行上定义这些属性,避免编辑:
ant "-Djava.compilerargs=-Xlint:unchecked -Xlint:deprecation" debug
启用所有Lint警告:
ant -Djava.compilerargs=-Xlint debug
答案 1 :(得分:14)
更简单,无需复制完整的javac目标:将以下行放在ant.properties文件中:
java.compilerargs=-Xlint:unchecked
这样,它就会覆盖Android SDK默认构建配置中的java.compilerargs。 (你可以自己检查一下它默认是空的,顺便说一下)。如果没有通知您的项目,SDK更新可能会更改默认的javac目标。
更简单的方法! :)
答案 2 :(得分:11)
是的,根据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文件并复制“编译”目标。
在&lt; setup /&gt;之前将其粘贴到build.xml文件中任务。
然后将以下元素添加到任务中:
<compilerarg value="-Xlint:deprecation"/>
同样,您可以添加其他编译器选项,例如未经检查的操作:
<compilerarg value="-Xlint:unchecked"/>
答案 3 :(得分:2)
看起来您应该只能在项目文件夹根目录中的build.properties
或ant.properties
中指定该选项。我尝试过这个似乎没有用。
我想避免编辑我的build.xml
文件,因为如果您需要更新项目,这会增加复杂性。但是,我无法找到解决办法。但是,我没有复制整个compile
目标,而是添加了:
<property name="java.compilerargs" value="-Xlint:unchecked" />
就在文件底部的import
行之前。
答案 4 :(得分:0)
如果您希望拥有良好的CI + CD管道并且关心代码质量,则可以通过将其添加到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进行设置。我只添加了两个编译器参数选项,但还有更多。您可以找到更多信息here和here。