Proguard mit Autovalue

8

Ich habe gerade angefangen, AutoValue zu benutzen, aber ich kann es nicht mit proguard arbeiten lassen. Ich habe ungefähr 6000+ Warnungen, die so aussehen

  

Warnung: autovalue.shaded.com.google.common.auto.common.MoreElements $ 1: kann keine Oberklasse oder Schnittstelle javax.lang.model.util.SimpleElementVisitor6

finden

Der eigentliche Fehler zeigt dies ...

  

Fehler: Ausführung fehlgeschlagen für Aufgabe   ': transformClassesAndResourcesWithProguardForDebug'.   java.io.IOException: Bitte korrigieren Sie zuerst die obigen Warnungen.

Wie kann ich dieses Problem lösen?

    
jiduvah 05.04.2016, 14:12
quelle

1 Antwort

12

Das Update

Dies geschieht, da Sie die Bibliothek als compile -Abhängigkeit Ihres Projekts hinzugefügt haben. Etwas wie das:

%Vor%

Sie müssen die Bibliothek zu einer provided Abhängigkeit machen:

%Vor%

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

Die Erklärung

AutoValue ist eine Bibliothek, die Code für Sie generiert. Ihre einzige Interaktion mit der Bibliothek selbst sollte über die @AutoValue -Anmerkungen erfolgen, die RetentionPolicy.SOURCE enthalten - 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 - das ist der Code, auf dem ProGuard läuft.

    
vaughandroid 08.07.2016 10:50
quelle