2016-02-05 14 views
6

Uso il plugin graduard proguard all'interno di intellij (non per un progetto Android), specificando i miei libraryjars come java home, input jar come jarname.jar e output giare come jarname.pro.jar. Ho un file proguard.txt per la configurazione, con tutto tranne il metodo Main mantiene l'opzione esclusa. Proguard getta il seguente errore:Proguard che lancia IOException per la voce zip duplicata nonostante una sola voce esistente

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]))

Secondo questa source from the proguard website, ho voci duplicate in jarname.jar. Il controllo manuale di jarname.jar non mostra voci duplicate. Dove dovrei cercare di risolvere questo problema?

+0

Lasciatemelo limitare un po '. Il plugin gradead proguard prende input da qualsiasi altra cosa oltre al mio riferimento di -libraryjars e inputjars? – user1982116

+0

Hai trovato qualche soluzione? Sto vivendo lo stesso problema. – elhm

risposta

0

di verificare questa soluzione/trucco: https://stackoverflow.com/a/39584838/1919549

Adattato per il vostro errore, aggiungere questo al 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() } 
} 

Nota questo comando non cancella quei vasi (il vostro errore di duplicazione implica verranno aggiunti nuovamente) - solo un blocco di configurazione/esclusione lo farà. Non ho idea del motivo per cui sono inclusi poiché, nel mio progetto, non sono stati duplicati anche dopo l'ispezione dell'app gradle: dipendenze.

Problemi correlati