簡體   English   中英

如何從ProGuard中排除注釋處理器依賴項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM