Android Studio提示使用deprecated API但检查无结果如何定位
Android项目编译提示存在废弃API但IDE检查无结果的定位方法
问题场景
更新停更两年的Android项目、排查替换过时代码时,项目可正常编译,但抛出如下编译警告:
注意:C:\Users\PCDELL\AndroidStudioProjects\BM\app\src\main\java\p\p\bm\MainActivity.java 使用或重写了deprecated API。注意:请使用-Xlint:deprecation重新编译以查看详情。注意:部分输入文件使用了未经检查或不安全的操作。注意:请使用-Xlint:unchecked重新编译以查看详情。
按照常规IDE操作路径排查:依次点击菜单栏 Code > Analyze code > Run Inspection By name,选择Deprecated API usage后执行全项目检查,最终未返回任何问题,仅弹出提示:
代码检查未发现可报告项,已处理项目"BM"中的90个文件。
此时静态代码检查无相关报错提示,MainActivity中也没有代码被下划线标记为过时,无法定位具体的废弃代码位置。
已验证有效的定位方案
在Gradle中添加编译参数,开启编译阶段的详细警告输出,重新构建后即可在编译日志中看到具体的废弃方法、未检查不安全操作的精确位置:
- 旧版Android Studio通用配置
allprojects { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } }
- Android Studio Arctic Fox及以上版本配置
android { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } }
配置完成后建议先执行Clean Project清除构建缓存,再重新编译,避免缓存导致警告信息不输出。
其他可选定位方式
- 无需修改Gradle配置,直接在项目根目录打开终端执行编译命令:
./gradlew :app:compileDebugJavaWithJavac --console=plain,即可在终端输出完整的编译警告详情,定位废弃API位置。 - 排查MainActivity继承的父类、实现的接口中是否存在被
@Deprecated标记的方法,重写这类过时方法的场景下,IDE静态检查偶尔不会主动标黄提示,但编译阶段会触发警告。 - 排查MainActivity中调用的三方依赖方法,部分依赖库内部方法在高版本compileSdk环境下被标记为过时,跨依赖调用的场景可能出现IDE检查漏报。
内容的提问来源于stack exchange,提问作者JP711
相关产品推荐
相关产品推荐

