正告

在android开发中,咱们在运行程序时,编译Build窗口中的信息中有时会呈现如下-Xlint:deprecation的信息提示

注: 某些输入文件运用或覆盖了已过期的 API。
注: 有关详细信息, 请运用 -Xlint:deprecation 从头编译

AndroidStudio编译时呈现-Xlint:deprecation、-Xlint:unchecked正告

原因

根据提示信息:咱们在写代码时,调用了一些已过期的api(也便是符号有@Deprecated注解的办法)

也便是当时SDK比较新,但是咱们运用了一些比较旧api,这些旧api在当时SDK中已经有新的api代替

如:

AndroidStudio编译时呈现-Xlint:deprecation、-Xlint:unchecked正告

处理

咱们在gradle的构建脚本中增加编译-Xlint:deprecation的参数

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

AndroidStudio编译时呈现-Xlint:deprecation、-Xlint:unchecked正告

能够在子模块的build.gradle文件中进行增加。

增加完后,再次运行程序,编译日志中就能够看到,咱们运用了哪些过期的api

AndroidStudio编译时呈现-Xlint:deprecation、-Xlint:unchecked正告

咱们能够点击进入到正告的代码,采用运用本SDK中新api代替过期api,消除正告。

比方这里是

咱们调用Html.fromHtml("<b>test</>");这个办法,fromHtml(String)这个api在本SDK中已经过期了,咱们能够ctrl + 鼠标左键进入fromHtml(String)这个办法中,看它的办法描述

AndroidStudio编译时呈现-Xlint:deprecation、-Xlint:unchecked正告

他的主张信息是@deprecated use {@link #fromHtml(String, int)} instead.也便是主张咱们运用fromHtml(String source, int flags)这个api

咱们改用fromHtml(String source, int flags)这个api,正告就消除了。

扩展

-Xlint:deprecation设置类似的,还有-Xlint:unchecked这个编译参数

注: G:LHYandroid-java-DemoappsrcmainjavacomexamplemydemoMainActivity.java
运用了未经检查或不安全的操作。
注: 有关详细信息, 请运用 -Xlint:unchecked 从头编译。

如提示所说的,咱们在写代码的时分没有留意标准

相同的,咱们也能够在gradle构建脚本中加上-Xlint:unchecked这个编译参数

allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            // -Xlint:unchecked 日志打印'未经检查或不安全的操作'的详细信息
            // -Xlint:deprecation 日志打印`输入文件运用或覆盖了已过期的 API`的详细信息
            options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
        }
    }
}

从头编译

AndroidStudio编译时呈现-Xlint:deprecation、-Xlint:unchecked正告

能够看到,咱们写如下代码呈现的正告

Map<String, String> map = new HashMap();

咱们按标准修改如下

Map<String, String> map = new HashMap<>();

再次编译,正告就消除了