如何使用 -Xlint:deprecation 重新编译
How to recompile with -Xlint:deprecation
我不使用 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?
要回答我自己的问题,您需要将以下内容添加到您的项目级 build.gradle
文件中:
allprojects {
...
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:deprecation"
}
}
}
我添加了应用内级别 build.gradle 并解决了问题
aaptOptions { cruncherEnabled = false }
自从我最近 运行 关注这个问题以来,我只是更新一下:
您可以按照@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 中,而是在您下载的包中,您应该查看该包是否需要升级或联系该包的管理员。
is an accepted answer but solved this with Gradle Java
plugin如下。
如果还没有添加 java 插件到 build.gradle
文件。
plugins {
// Apply the java plugin to add support for Java
id "java"
}
然后根据您的需要添加任务 compileJava
and/or compileTestJava
以仅检查 java 主要源代码或 java 测试源代码的弃用。
您可以添加列出的各种编译选项 here
compileTestJava {
// options.incremental = true
// options.fork = true
// options.failOnError = false
options.compilerArgs.add("-Xlint:deprecation")
}
此外,我们可以将主要和测试源代码项目指定为
tasks.withType(JavaCompile) {
options.compilerArgs.add("-Xlint:deprecation")
}
将此代码添加到 build.gradle 解决了我的问题
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:deprecation"
}
}
Kotlin(build.gradle.kts)版本的其他答案:
allprojects {
gradle.projectsEvaluated {
tasks.withType<JavaCompile> {
options.compilerArgs.addAll(arrayOf("-parameters", "-Xlint:deprecation"))
}
}
}
我不使用 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?
要回答我自己的问题,您需要将以下内容添加到您的项目级 build.gradle
文件中:
allprojects {
...
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:deprecation"
}
}
}
我添加了应用内级别 build.gradle 并解决了问题
aaptOptions { cruncherEnabled = false }
自从我最近 运行 关注这个问题以来,我只是更新一下:
您可以按照@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 中,而是在您下载的包中,您应该查看该包是否需要升级或联系该包的管理员。
Java
plugin如下。
如果还没有添加 java 插件到 build.gradle
文件。
plugins {
// Apply the java plugin to add support for Java
id "java"
}
然后根据您的需要添加任务 compileJava
and/or compileTestJava
以仅检查 java 主要源代码或 java 测试源代码的弃用。
您可以添加列出的各种编译选项 here
compileTestJava {
// options.incremental = true
// options.fork = true
// options.failOnError = false
options.compilerArgs.add("-Xlint:deprecation")
}
此外,我们可以将主要和测试源代码项目指定为
tasks.withType(JavaCompile) {
options.compilerArgs.add("-Xlint:deprecation")
}
将此代码添加到 build.gradle 解决了我的问题
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:deprecation"
}
}
Kotlin(build.gradle.kts)版本的其他答案:
allprojects {
gradle.projectsEvaluated {
tasks.withType<JavaCompile> {
options.compilerArgs.addAll(arrayOf("-parameters", "-Xlint:deprecation"))
}
}
}