【平常問題記錄】新版 Gradle 與 APT 註解處理器的兼容性問題

問題根源: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

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

我這邊打出來是 這樣的:spa

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

我以前使用的是 @AutoService(Processor.class) 註解來自動生成 服務文件的,也就是說,如今這個註解失效了。立刻想到了手動添加 服務文件。在 src/main/ 下建立 resources/META_INF/services/javax.annotation.processing.Processor 文件,以下:3d

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

該配置文件的格式以下:內部爲各處理器的全類名路徑,換行隔開。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"
複製代碼
相關文章
相關標籤/搜索