我不使用Android Studio,但是我使用build.gradle
从命令行构建了所有内容。我生成一个像这样的Lint报告:
./gradlew lint
这正确地生成了一份Lint报告,但它也说明了这一点:
Note: MyActivity.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
这让我想知道我怎么能这样做?我尝试了以下内容:
./gradlew lint -Xlint:deprecation
但它不起作用。它说:
Problem configuring task :app:lint from command line.
Unknown command-line option '-X'.
那么如何通过gradle将-Xlint:deprecation
传递给Lint?
答案 0 :(得分:32)
要回答我自己的问题,将其添加到build.gradle
可以解决问题:
allprojects {
...
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:deprecation"
}
}
}
答案 1 :(得分:0)
我添加了应用内级别的build.gradle并解决了问题
aaptOptions {
cruncherEnabled = false
}
答案 2 :(得分:0)
自从我最近遇到这个问题以来,这只是我的最新消息:
您可以按照接受的答案中的@Andreas的建议获取有关弃用问题的详细信息。如果您使用的是Kotlin,则真正的解决方案是(在build.gradle中):
allprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs.add("-Xlint:deprecation")
}
}
}
另一种解决方案是更新您的AndroidSDK。问题在于SDK方法会覆盖已弃用的功能。在您的build.gradle文件中,您可以更改compileSdkVersion:
android {
compileSdkVersion 29 //Change this to the latest release
...
...
defaultConfig {
...
targetSdkVersion 29 //Change this too
...
}
}
使用最新的SDK版本可能会解决您的问题。 Android很好地解决了两个版本之间的弃用问题。如果仍然存在,则可能只需要等待下一个SDK版本即可。如果问题不是在AndroidSDK中,而是在您下载的软件包中,则应查看该软件包是否需要升级或与该软件包的管理员联系。
答案 3 :(得分:0)
This是一个可接受的答案,但可以使用Gradle Java
plugin如下解决。
如果尚未添加Java插件,请添加到build.gradle
文件中。
plugins {
// Apply the java plugin to add support for Java
id "java"
}
然后根据您的需要,仅针对Java主要源代码或Java测试源代码检查弃用项,然后添加任务compileJava
和/或compileTestJava
。
您可以添加列出的here
compileTestJava {
// options.incremental = true
// options.fork = true
// options.failOnError = false
options.compilerArgs.add("-Xlint:deprecation")
}
此外,我们可以为main和test源代码项目指定为
tasks.withType(JavaCompile) {
options.compilerArgs.add("-Xlint:deprecation")
}
答案 4 :(得分:0)
将此代码添加到 build.gradle 解决了我的问题
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:deprecation"
}
}