問題根源:apt產物 jar 包內缺乏 javax.annotation.processing.Processor
文件java
新建了一個工程,寫了一個註解處理器,將註解處理器依賴至目標模塊,死活沒法生效。android
檢查了各類配置,註解、註解名稱、Java 適配版本,沒發現問題。bash
我當前的 gradle 環境:gradle
classpath 'com.android.tools.build:gradle:3.4.1'
複製代碼
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
複製代碼
註解處理器依賴 auto-service 的版本號:ui
implementation 'com.google.auto.service:auto-service:1.0-rc4'
複製代碼
回過神來看 apt 模塊生成的jar包,發現裏面少了 註冊 處理器的服務文件; 也就是:google
我這邊打出來是 這樣的:spa
我以前使用的是 @AutoService(Processor.class)
註解來自動生成 服務文件的,也就是說,如今這個註解失效了。立刻想到了手動添加 服務文件。在 src/main/ 下建立 resources/META_INF/services/javax.annotation.processing.Processor 文件,以下:3d
該配置文件的格式以下:內部爲各處理器的全類名路徑,換行隔開。code
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 的註解處理器配置便可:cdn
annotationProcessor "com.google.auto.service:auto-service:1.0-rc4"
複製代碼