logo头像

我有一个梦想

lint在AGP3.3.3失效的问题

本文于 326 天之前发表,文中内容可能已经过时。

自定义的lint规则在AGP3.3.3上存在问题,有一多半情况下,自定义lint规则是失效的,他并不能检查到lint问题,到底为什么?该怎么解决?

为什么?
为什么在AGP3.3.3上偶尔失效,而在AGP4.2上就没有问题,在网上搜了很多,这方面的资料很少。直到我找到这个 自定义lint规则不生效

其中表示,不生效的问题来源于lint SDK的 findRegistries方法的问题,在高版本之后才修复

而AGP3.3.3使用的是26.3.3,我们分析了下远吗,果然存在这个问题,那么下一个阶段是如何修复改问题。

问题修复
如何修复该问题:

升级AGP版本,使用最新的lint SDK,避免这个问题
修复26.3.3的lint SDK,然后在lint规则校验时指向已修复的lint SDK。
修复步骤:
下载26.3.3源码jar包
编译JarFileIssueRegistry文件,生成文件大概有4个
解压1中的jar包,并替换2文件
重新打包zip,在修改后缀名为jar
在使用lint规则的地方,添加

1
lintClassPath "com.android.tools.lint:lint-api:26.3.3.4-fix-service"

无论是在插件中还是代码中之遥添加如上代码,就会使用已修复的lint SDK,则修复了该问题