如何使用-Xlint重新编译:弃用

时间:2018-04-07 20:40:05

标签: android gradle lint

我不使用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?

5 个答案:

答案 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"
        }
    }