2017-09-27 100 views
4

當試圖創建我的Android項目發行版以防止構建成功完成時,我收到了一條ProGuard警告。如何從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只包括在我的build.gradle文件作爲annotationProcessor,所以我不明白爲什麼它甚至被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的配置文件搞清楚該庫的代碼生成過程中只使用,不實際需要的釋放。這沒有效果。

我也看過online help,但我不清楚如何指定這種依賴作爲-libraryjars文件建議。

如何配置應用程序的ProGuard配置文件或其build.gradle文件以防止ProGuard窒息此庫?如果它很重要,我只需使用ProGuard刪除未使用的代碼並不執行任何混淆處理。

回答

0

我們在使用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當最初試圖解決這個問題。

1
// Auto factory for Assisted Injection 
annotationProcessor "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}" 
provided "com.google.auto.factory:auto-factory:${libs.autoFactoryVersion}" 
+0

這似乎沒有解決問題。我們最近通過Android 3.0.0 Gradle插件和Gradle 4.1升級到了Android Studio 3.0,這很複雜。 –

+0

請嘗試提供。它運行良好 – user1820178

+0

我們已經試着用「提供」而不是「編譯」,但這對ProGuard沒有什麼影響。要清楚,我們的問題不是使用AutoFactory批註處理器,而是配置ProGuard在創建版本構建時忽略它的依賴關係。 –