10 votes

Proguard est revenu avec le code d'erreur 1. Après la mise à jour de l'ADT 16 à 18

J'avais l'habitude d'avoir Proguard 4.6 fonctionne parfaitement pour exporter des applications signées sur Eclipse 3.6.2.

Mais une fois que j'ai mis à jour mon ADT + SDK à partir de 16.0.0.v201112150204-238534 a 18.0.0.v201203301601-306762 Je ne peux plus exporter les applications signées (la version de débogage fonctionne bien). Au lieu de cela, je reçois le journal d'erreurs suivant dans la 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

J'ai cherché des indices dans SO mais le seul fil de discussion que j'ai pu trouver à ce sujet est sur Proguard 4.7 avec Eclipse SDK 3.7.1 avec une référence à "Samsung's SPen SDK 1.5" que je n'ai clairement pas.

Une idée de la cause de ce problème et de la façon de le résoudre ?

20voto

Szabolcs Berecz Points 1620

Je l'ai résolu en passant d'OpenJDK 7 à Sun JDK 6.

Mise à jour :

Le problème est revenu en utilisant le JDK 6. Ma solution actuelle : désactiver Project -> Build Automatically lors de l'exportation.

11voto

Regex Rookie Points 3070

Problème résolu en mettant à jour Proguard à la dernière version 4.8.

UPDATE : Bien que la mise à jour vers Proguard 4.8 ait résolu le problème, celui-ci s'est reproduit dans un autre projet presque identique à celui qui a présenté le problème en premier lieu (il utilise le même projet de bibliothèque). Sachant que l'environnement entier est identique, je ne savais pas pourquoi cela se produisait (et pourquoi Proguard est si incohérent). Après environ deux heures à courir après le problème, j'ai finalement trouvé une solution : le projet proguard.cfg n'a pas été édité via Eclipse, mais plutôt via WinMerge. Dès que j'ai copié sur le fichier (identique !) proguard.cfg du projet de travail, le problème a disparu.

Apparemment, Proguard a un problème avec CRLF vs. LF.

2voto

Eric Lafortune Points 17656

Le message d'erreur suggère qu'un jar d'entrée qui est passé à ProGuard est corrompu. Vous pouvez facilement vérifier cela après l'échec de la construction. Peut-être que votre partition de disque est pleine.

0voto

RobCroll Points 1064

Cela peut se produire parce qu'un fichier a été modifié depuis la dernière fois que vous avez testé le projet, de sorte que le projet peut ne pas être construit complètement. Nettoyez et exécutez le projet sur un appareil, puis essayez d'exporter.

0voto

Mac Points 19

Problème résolu en commentant la ligne dans project.propterties c'est-à-dire

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X