2012-06-11 11 views
10

Avevo il Proguard 4.6 perfettamente funzionante per esportare applicazioni firmate su Eclipse 3.6.2.Proguard restituito con codice errore 1. Dopo l'aggiornamento da ADT 16 a 18

Ma una volta aggiornato il mio ADT + SDK da 16.0.0.v201112150204-238534 a 18.0.0.v201203301601-306762 non riesco più ad esportare applicazioni firmate (la versione di debug funziona correttamente). Invece ricevo il seguente log degli errori nella console:

Proguard returned with error code 1. See console 
java.io.IOException: Can't read [\\bta\wspc\LibProj1\bin\libproj1.jar] (Can't process class [com/bta/blib/proj1/BtClsProj1.class] (Unexpected end of ZLIB input stream)) 
    at proguard.InputReader.readInput(InputReader.java:230) 
    at proguard.InputReader.readInput(InputReader.java:200) 
    at proguard.InputReader.readInput(InputReader.java:178) 
    at proguard.InputReader.execute(InputReader.java:78) 
    at proguard.ProGuard.readInput(ProGuard.java:196) 
    at proguard.ProGuard.execute(ProGuard.java:78) 
    at proguard.ProGuard.main(ProGuard.java:492) 
Caused by: java.io.IOException: Can't process class [com/bta/blib/proj1/BtClsProj1.class] (Unexpected end of ZLIB input stream) 
    at proguard.io.ClassReader.read(ClassReader.java:112) 
    at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87) 
    at proguard.io.JarReader.read(JarReader.java:65) 
    at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65) 
    at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53) 
    at proguard.InputReader.readInput(InputReader.java:226) 
    ... 6 more 
Caused by: java.lang.RuntimeException: Unexpected end of ZLIB input stream 
    at proguard.classfile.io.RuntimeDataInput.readInt(RuntimeDataInput.java:136) 
    at proguard.classfile.io.ProgramClassReader.visitProgramClass(ProgramClassReader.java:77) 
    at proguard.classfile.ProgramClass.accept(ProgramClass.java:346) 
    at proguard.io.ClassReader.read(ClassReader.java:91) 
    ... 11 more 

ho cercato SO di indizi, ma l'unico filo correlata Sono stato in grado di trovare è di circa Proguard 4.7 with Eclipse SDK 3.7.1 con qualche riferimento a "Samsung Spen SDK 1.5", che ho chiaramente non ce l'ho.

Qualche idea su cosa potrebbe causare questo e su come risolvere il problema?

risposta

11

Problema risolto aggiornando Proguard all'ultima 4.8.

AGGIORNAMENTO: Durante l'aggiornamento a Proguard 4.8 risolto il problema, si è verificato nuovamente in un altro progetto che è quasi identico a quello che ha mostrato per primo il problema (utilizza lo stesso progetto di libreria). Sapendo che l'intero ambiente è identico, non sapevo perché questo stava accadendo (e perché Proguard è così incoerente). Dopo circa due ore di inseguimento della mia coda, ho finalmente avuto un'ipotesi: il file proguard.cfg non è stato modificato tramite Eclipse, ma tramite WinMerge. Non appena ho copiato il (identico!) proguard.cfg dal progetto di lavoro, il problema è scomparso.

Apparentemente, Proguard ha un problema con CRLF rispetto a LF.

2

Il messaggio di errore suggerisce che un jar di input passato a ProGuard è danneggiato. Puoi facilmente controllare questo dopo la build fallita. Forse la tua partizione del disco è piena.

+0

ho già postato ieri i miei risultati (insieme con la soluzione giusta per il mio caso particolare). La mia partizione del disco è lungi dall'essere piena. Qualche idea sul perché Proguard non possa usare un proguard.cfg che è stato riparato tramite WinMerge? +1 per ora. –

+2

Per quanto posso dire, ProGuard gestisce bene CR/LF. La causa principale "Fine inattesa del flusso di input ZLIB" per libproj1.jar (proveniente da una classe di runtime java) suggerisce fortemente che il barattolo è corrotto. Questo è facile da controllare. Le versioni di ProGuard o le configurazioni unite sembrano casuali. –

20

ho risolto passando da OpenJDK 7 Torna a Sun JDK 6.

Aggiornamento:

Il problema è tornato con JDK 6. mia soluzione attuale: spegnere Progetto -> Crea automaticamente durante l'esportazione .

+6

+1 funziona per me ogni volta. Sebbene nessuno abbia una soluzione più permanente? – 3c71

+2

Disattivazione di Build automaticamente quando l'esportazione ha funzionato per me. Grazie! –

0

Ciò può verificarsi perché un file è stato modificato dall'ultima volta che è stato testato il progetto in modo che il progetto non possa essere completamente creato. Pulisci ed esegui il progetto su un dispositivo, quindi prova ad esportarlo.

0

problema risolto commentando la linea in project.propterties cioè

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 
Problemi correlati