正告
在android开发中,咱们在运行程序时,编译Build窗口中的信息中有时会呈现如下-Xlint:deprecation的信息提示
注: 某些输入文件运用或覆盖了已过期的 API。
注: 有关详细信息, 请运用 -Xlint:deprecation 从头编译
原因
根据提示信息:咱们在写代码时,调用了一些已过期的api(也便是符号有@Deprecated
注解的办法)
也便是当时SDK比较新,但是咱们运用了一些比较旧api,这些旧api在当时SDK中已经有新的api代替
如:
处理
咱们在gradle的构建脚本中增加编译-Xlint:deprecation
的参数
allprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:deprecation"
}
}
}
能够在子模块的build.gradle文件中进行增加。
增加完后,再次运行程序,编译日志中就能够看到,咱们运用了哪些过期的api
咱们能够点击进入到正告的代码,采用运用本SDK中新api代替过期api,消除正告。
比方这里是
咱们调用Html.fromHtml("<b>test</>");
这个办法,fromHtml(String)
这个api在本SDK中已经过期了,咱们能够ctrl + 鼠标左键进入fromHtml(String)
这个办法中,看它的办法描述
他的主张信息是@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"
}
}
}
从头编译
能够看到,咱们写如下代码呈现的正告
Map<String, String> map = new HashMap();
咱们按标准修改如下
Map<String, String> map = new HashMap<>();
再次编译,正告就消除了