2016-04-05 43 views
8

我剛開始使用AutoValue,但我無法使它與proguard一起使用。我身邊有6000+的警告看起來像這樣Proguard with Autovalue

Warning:autovalue.shaded.com.google.common.auto.common.MoreElements$1: can't find superclass or interface javax.lang.model.util.SimpleElementVisitor6

的實際錯誤顯示了這個...

Error:Execution failed for task ':transformClassesAndResourcesWithProguardForDebug'. java.io.IOException: Please correct the above warnings first.

我怎樣才能解決這個問題?

+0

您是否找到解決方案? – AndroidGecko

回答

12

這是發生,因爲你已經添加庫作爲項目的一個compile依賴的修補程序。事情是這樣的:

dependencies { 
    compile 'com.google.auto.value:auto-value:1.2' 
} 

你需要讓庫provided依賴性:

dependencies { 
    provided 'com.google.auto.value:auto-value:1.2' 
} 

注:provided配置由Android的搖籃插件提供。如果您在純Java庫模塊中使用AutoValue,請使用Gradle 2.12中添加的compileOnly配置。

解釋

AutoValue是爲您生成的代碼庫。您與庫本身的唯一交互應該通過@AutoValue註釋(它們具有RetentionPolicy.SOURCE) - 即它們僅在您的源代碼中可用,而不在編譯的代碼中。

這意味着您的編譯代碼與AutoValue庫代碼無關。因此,它不需要編譯您的代碼 - ProGuard運行的代碼。

+1

仍然使用'compileOnly'後,我得到相同的錯誤。 –