升级AGP至3.6.1后ButterKnife触发AnnotationProcessorOnCompilePath警告的正确修复方案
我之前升级Android Gradle Plugin到3.6.1版本时,也碰到过一模一样的问题——明明按照ButterKnife官方要求配置了依赖,执行./gradlew lint却还是弹出AnnotationProcessorOnCompilePath警告。其实这是AGP 3.6.x版本的Lint规则更严格后产生的误判,下面给你两个靠谱的修复方法:
方案1:全局调整Lint规则,一次性解决误报
如果这个警告对你的项目没有实际参考价值,最省心的方式是直接在app/build.gradle里禁用这个容易误判的Lint检查项:
android { // 保留你原本的其他配置 lintOptions { disable 'AnnotationProcessorOnCompilePath' } }
这样整个项目都不会再触发这个警告,不用挨个依赖加抑制注释。
方案2:针对单个依赖精准抑制
如果你不想全局禁用规则,只想处理这一处警告,那可以继续用你提到的临时方案,这里帮你理清楚逻辑:
dependencies { // 其他依赖保持不变 //noinspection AnnotationProcessorOnCompilePath implementation 'com.jakewharton:butterknife:10.2.1' kapt 'com.jakewharton:butterknife-compiler:10.2.1' }
这个注释只会抑制当前依赖的该警告,不会影响其他代码的Lint检查。
补充说明:为什么会出现这个警告?
AGP 3.6.x升级了Lint对注解处理器路径的检查逻辑,它误把包含注解定义的butterknife核心库当成了注解处理器依赖,要求将其移到annotationProcessor(或kapt)路径中。但实际上butterknife库包含了运行时必需的核心逻辑和注解定义,必须放在implementation配置里;而真正的注解处理器butterknife-compiler你已经正确配置在kapt下了,所以这完全是Lint的误判。
内容的提问来源于stack exchange,提问作者IliaEremin
相关产品推荐
相关产品推荐

