问题根源: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包,发现里面少了 注册 处理器的服务文件; 也就是:
我这边打出来是 这样的:
我之前使用的是 @AutoService(Processor.class) 注解来自动生成 服务文件的,也就是说,现在这个注解失效了。马上想到了手动添加 服务文件。在 src/main/ 下创建 resources/META_INF/services/javax.annotation.processing.Processor 文件,如下:
该配置文件的格式如下:内部为各处理器的全类名路径,换行隔开。
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"
招聘广告 🐂
【优酷】杭州团队,长期招聘!!!
- 前端「急」
- Java 后端 「爆」
- 移动端:安卓 & iOS 「热」
办公地点:蚂蚁Z空间。
面试方式:电话&视频优先。
主要有优酷少儿、创新项目等业务,P6/P7 都有。
想试一试的小伙伴,邮件联系 hdtpjhz@163.com