Android Lint未报告@Deprecated标记类/函数的使用,配置lint.xml无效求助
解决Android Lint未检测到@Deprecated使用情况的问题
先确认Lint扫描范围和触发方式
- 检查
build.gradle的lintOptions配置,确保没把使用废弃类/方法的文件或模块排除在外:lintOptions { checkAllWarnings true // 别写exclude把需要扫描的目录排除了 // exclude '**/some-unrelated-dir/**' } - 别用增量扫描,直接触发全量检查:Android Studio里选
Analyze > Inspect Code...,勾选整个项目;或者命令行执行./gradlew lint。
检查@Deprecated注解的正确性
- 必须用Java自带的
java.lang.Deprecated或者Kotlin标准的@Deprecated,别用自定义的同名注解,Lint不认。 - 要是Kotlin代码,留意
@Deprecated的level参数,别设成DeprecationLevel.HIDDEN(默认是WARNING,没问题,但手动改了就会失效):@Deprecated("该类已废弃", level = DeprecationLevel.WARNING) class OldClass
修正lint.xml配置
- 确认lint.xml位置:要么在项目根目录,要么在对应模块的
src/main下(模块级配置优先级更高)。 - 检查配置有没有冲突,别同时存在disable这个规则的代码,正确配置示例:
<?xml version="1.0" encoding="UTF-8"?> <lint> <issue id="Deprecated" severity="warning" /> <!-- 删掉任何<issue id="Deprecated" severity="ignore" />的配置 --> </lint>
更新Lint相关版本
- 旧版gradle插件的Lint可能有bug,把项目根目录
build.gradle里的gradle插件版本更到新稳定版试试:dependencies { classpath 'com.android.tools.build:gradle:7.4.2' // 换成最新稳定版 }
确认HTML报告的完整性
- 打开Lint生成的HTML报告,看"Summary"部分,确认扫描的文件数量是不是覆盖了所有用到废弃代码的地方,别只生成了单个模块的报告。
内容的提问来源于stack exchange,提问作者Radim Janda
相关产品推荐
相关产品推荐

