升级Gradle至3.1.0后为何出现“3rd-party Gradle plug-ins may be the cause”提示?
升级至com.android.tools.build:gradle:3.1.0后出现该提示的原因及解决思路
嘿,这个问题我之前帮好几个开发者排查过,AGP 3.1.0的这个警告其实是谷歌为了优化增量编译搞的小“严格检查”,具体原因和解决办法我给你掰扯清楚:
核心原因
这个提示的本质是Android Gradle Plugin(AGP)3.1.0新增的编译目录管控机制在起作用:
- AGP 3.1开始对注解处理器生成的代码目录(比如
kaptKotlin)的写入权限做了严格限制,这个目录原本是AGP专门留给kapt注解处理器生成Kotlin代码用的,第三方插件或依赖如果直接往这里写文件,就会触发警告。 - 新版本AGP对增量编译的可靠性要求更高,第三方插件随意修改AGP管理的目录,可能会破坏增量编译的缓存逻辑,导致编译变慢、缓存失效甚至编译结果异常,所以AGP会主动抛出这个提示来提醒你排查风险。
- 大概率是你项目里用的第三方注解处理器、插件(比如老版本的Dagger、Room,或者自定义注解处理器)还没适配AGP 3.1的新规范,它们的编译输出路径没有按照要求配置,误写入了
kaptKotlin目录。
解决思路
- 优先升级依赖/插件版本:把项目里的注解处理器、相关插件升级到适配AGP 3.1的版本,比如Dagger 2.15+、Room 1.1.0+都已经修复了这类路径问题。
- 检查自定义Gradle任务:如果你自己写了Gradle任务,看看有没有操作
build/generated/source/kaptKotlin/目录的逻辑,有的话改成写入AGP允许的自定义生成目录(比如build/generated/source/custom/)。 - 临时屏蔽警告(不推荐):如果暂时找不到可升级的版本,可以尝试在模块的
build.gradle里配置关闭相关检查,但这可能影响增量编译效率:android { kapt { // 开启类型错误修正,部分场景下能规避路径冲突 correctErrorTypes = true // 极端情况可以关闭kapt增量编译,但会变慢 // incremental = false } }
内容的提问来源于stack exchange,提问作者azsoftco
相关产品推荐
相关产品推荐

