新版 Gradle 与 APT 注解处理器的兼容性问题

2019-10-29  本文已影响0人  莫再讲xml

问题根源:apt产物 jar 包内缺少 javax.annotation.processing.Processor 文件


新建了一个工程,写了一个注解处理器,将注解处理器依赖至目标模块,死活无法生效。

检查了各种配置,注解、注解名称、Java 适配版本,没发现问题。

我当前的 gradle 环境:

classpath 'com.android.tools.build:gradle:3.4.1'
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

注解处理器依赖 auto-service 的版本号:

    implementation 'com.google.auto.service:auto-service:1.0-rc4'

回过神来看 apt 模块生成的jar包,发现里面少了 注册 处理器的服务文件;
也就是:

屏幕快照 2019-09-16 16.29.48.png

我这边打出来是 这样的:

屏幕快照 2019-09-16 16.30.49.png

我之前使用的是 @AutoService(Processor.class) 注解来自动生成 服务文件的,也就是说,现在这个注解失效了。马上想到了手动添加 服务文件。在 src/main/ 下创建 resources/META_INF/services/javax.annotation.processing.Processor 文件,如下:

屏幕快照 2019-09-16 16.33.42.png

该配置文件的格式如下:内部为各处理器的全类名路径,换行隔开。

com.demo.process.AAAProcessor
com.demo.process.BBBProcessor
com.demo.process.CCCProcessor

看了另外一篇文章 Android Gradle由4.x升级至5.0导致Apt项目失效,参考了评论区老哥 @ 小蜻蜓_S 的做法,亲测也是可行的,切就是原来注解的效果。
只需要在 apt 模块的 build.gradle 文件下的 dependencies 内增加 另一个 auto-service 的注解处理器配置即可:

    annotationProcessor "com.google.auto.service:auto-service:1.0-rc4"
上一篇 下一篇

猜你喜欢

热点阅读