Android库中@RequiresApi注解未触发Lint警告问题咨询
我来帮你排查下这个困扰——在Android库项目的方法上添加了@RequiresApi注解,应用调用时Lint却没按预期触发版本要求警告的问题,结合EncryptedSharedPreferences这类库的使用场景,常见的原因和解决办法如下:
检查库项目的注解依赖与配置
首先要确认你用的是正确的注解类:androidx.annotation.RequiresApi(适配AndroidX)或android.support.annotation.RequiresApi(旧support库),并且在库的build.gradle中已经引入了对应的注解依赖,比如:implementation 'androidx.annotation:annotation:1.6.0'同时检查库的Lint配置是否禁用了相关检查,确保
lintOptions里没有关闭NewApi规则:lintOptions { // 不要出现 disable 'NewApi' 这样的配置 checkAllWarnings true // 可选,确保所有警告都被检查 }确认应用项目的Lint配置开启了版本检查
应用侧的build.gradle里,要保证Lint的checkNewApi选项是开启状态,且没有禁用NewApi规则:lintOptions { checkNewApi true // 避免将 'NewApi' 加入disable列表 }另外,你可以手动触发一次完整的Lint检查(Analyze -> Inspect Code...),有时候自动检查可能会遗漏。
验证调用场景是否符合警告触发条件
只有当应用的minSdkVersion低于注解指定的API级别时,Lint才会触发警告。比如你注解了@RequiresApi(23),但应用的minSdkVersion设为24,那自然不会有警告。
还有一种情况:如果调用代码已经通过if (Build.VERSION.SDK_INT >= 23) { ... }做了版本判断,Lint会认为你已经处理了版本兼容,也不会触发警告。排查库的依赖与同步问题
如果是本地依赖库(比如project(':library')),先确认库的代码已经同步,注解确实存在于目标方法上;如果是远程依赖,要核对依赖的版本号,确保拉取的库版本已经包含了@RequiresApi注解,避免引用了未添加注解的旧版本。清除Android Studio的Lint缓存
有时候缓存会导致Lint检查不更新,你可以尝试清除缓存:点击File -> Invalidate Caches...,勾选Invalidate and Restart,重启后再重新运行Lint检查。
内容的提问来源于stack exchange,提问作者yausername

