2016-02-05 9 views
6

Ich benutze das Gradle Proguard-Plugin innerhalb von intellij (nicht für ein Android-Projekt), meine Bibliotheksjars als Java-Home, Eingabe-Jars als jarname.jar und Ausgabe-Jars als jarname.pro.jar. Ich habe eine proguard.txt-Datei für die Konfiguration, mit allem außer der Main-Methode beibehalten Option ausgeschlossen. Proguard führt den folgenden Fehler:Proguard wirft IOException für doppelte ZIP-Eintrag trotz nur einen Eintrag vorhanden

java.io.IOException: Can't write [/Users/user/src/name/build/libs/jarname.pro.jar] (Can't read [/Users/user/src/name/hci/build/libs/jarname.jar] (Duplicate zip entry [c/a/a/a.class == jarname.jar:com/google/gson/ExclusionStrategy.class]))

Nach diesem source from the proguard website, ich habe doppelte Einträge in jarname.jar. Das manuelle Überprüfen von jarname.jar zeigt keine doppelten Einträge. Wo soll ich das beheben?

+0

Lassen Sie mich das ein wenig eingrenzen. Nimmt das Proguard Gradle-Plugin Input von irgendetwas anderem außer meiner Referenz von -libraryjars und inputjars? – user1982116

+0

Haben Sie irgendeine Lösung gefunden? Ich habe das gleiche Problem. – elhm

Antwort

0

Schauen Sie sich diese Lösung/Hack: https://stackoverflow.com/a/39584838/1919549

für Ihren Fehler geeignet, fügen Sie diese build.gradle:

import com.android.build.gradle.internal.pipeline.TransformTask 

def deleteDuplicateJniFiles() { 
    def files = fileTree("/Users/user/src/name/hci/build/libs/") { 
     include "**/jarname.jar" 
    } 
    files.each { it.delete() } 
} 

tasks.withType(TransformTask) { pkgTask -> 
    pkgTask.doFirst { deleteDuplicateJniFiles() } 
} 

Hinweis: dieser Befehl nicht tatsächlich diese Gläser löschen (Ihre Vervielfältigung Fehler impliziert Sie werden wieder hinzugefügt) - nur ein Konfigurations/Ausschluss-Block wird das tun. Ich habe keine Ahnung, warum sie enthalten sind, da sie in meinem Projekt auch nicht bei der Überprüfung von Gradle App: Abhängigkeiten dupliziert wurden.

Verwandte Themen