2016-04-05 16 views
8

Ich habe gerade angefangen, AutoValue zu benutzen, aber ich kann es nicht mit proguard arbeiten lassen. Ich habe um 6000+ Warnungen, dieProguard mit Autovalue

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

wie diese aussehen Die tatsächlich Fehler zeigt dies ...

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

Wie kann ich dieses Problem beheben?

+0

Haben Sie eine Lösung dafür gefunden? – AndroidGecko

Antwort

12

Das Update

Dies, da Sie die Bibliothek als compile Abhängigkeit von Ihrem Projekt hinzugefügt haben, geschieht. Etwas wie folgt aus:

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

Sie benötigen die Bibliothek eine provided Abhängigkeit zu machen:

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

Hinweis: Die provided Konfiguration durch das Android Gradle Plugin zur Verfügung gestellt wird. Wenn Sie AutoValue in einem reinen Java-Bibliotheksmodul verwenden, verwenden Sie die in Gradle 2.12 hinzugefügte Konfiguration compileOnly.

Die Erklärung

Autovalue ist eine Bibliothek, die Code für Sie generiert. Ihre einzige Interaktion mit der Bibliothek selbst sollte über die @AutoValue Annotationen erfolgen, die RetentionPolicy.SOURCE haben - d. H. Sie sind nur in Ihrem Quellcode verfügbar, nicht im kompilierten Code.

Dies bedeutet, dass Ihr kompilierter Code keinerlei Verbindung zum AutoValue-Bibliothekscode hat. Es muss also nicht mit Ihrem Code kompiliert werden - auf dem ProGuard läuft.

+1

nach der Verwendung von 'compileOnly' immer noch, bekomme ich den gleichen Fehler. –