![](/img/trans.png)
[英]How to exclude a Maven dependency from the environment of an annotation processor?
[英]How to exclude an annotation processor dependency from ProGuard
在嘗試創建我的Android項目版本時,我收到了ProGuard警告,該版本阻止了構建成功完成。
警告:庫類com.google.googlejavaformat.java.filer.FormattingJavaFileObject $ 1 $ 1擴展或實現程序類com.google.common.io.CharSink
經過一些挖掘和運行gradlew :app:dependencies
,我發現已經包含了google-java-format,因為它最近被添加到項目中的AutoFactory使用。
+--- com.google.auto.factory:auto-factory:1.0-beta5
| +--- com.google.auto:auto-common:0.6 (*)
| +--- com.google.auto.value:auto-value:1.1 -> 1.3
| +--- com.google.googlejavaformat:google-java-format:1.1
AutoFactory只作為annotationProcessor包含在我的build.gradle
文件中,所以我不明白為什么它甚至被ProGuard處理。
provided "com.google.auto.factory:auto-factory:1.0-beta5"
annotationProcessor "com.google.auto.factory:auto-factory:1.0-beta5"
我嘗試將-dontwarn com.google.gooogleformat.**
添加到我的ProGuard配置文件中,確定該庫僅在代碼生成期間使用,並且實際上並不需要該版本。 這沒有效果。
我也查看了在線幫助 ,但我不清楚如何將此依賴項指定為-libraryjars
文件,如建議的那樣。
如何配置應用程序的ProGuard配置文件或其build.gradle
文件以防止ProGuard阻塞此庫? 如果重要,我只是使用ProGuard刪除未使用的代碼而不執行任何混淆。
// Auto factory for Assisted Injection
annotationProcessor "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}"
provided "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}"
在使用Android 3.0.0 Gradle插件和Gradle 4.1升級到Android Studio 3.0后,我們重新審視了此問題。 現在看來,將以下內容添加到proguard-rules.pro
可以解決問題:
-dontwarn com.google.googlejavaformat.**
-dontwarn com.google.common.**
看看我原來的問題,我們可能會在最初嘗試解決此問題時錯誤地輸入com.google.googlejavaformat
的命名空間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.