2012-06-11 9 views
10

Solía ​​tener Proguard 4.6 funcionando perfectamente para exportar aplicaciones firmadas en Eclipse 3.6.2.Proguard devuelto con el código de error 1. Después de la actualización de ADT 16 a 18

Pero una vez que actualicé mi ADT + SDK de 16.0.0.v201112150204-238534 a 18.0.0.v201203301601-306762 ya no puedo exportar aplicaciones firmadas (la versión de depuración funciona bien). En vez recibo el siguiente registro de error en la consola:

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 

busqué SO en busca de pistas, pero el único hilo relacionada que he podido encontrar es de aproximadamente Proguard 4.7 with Eclipse SDK 3.7.1 con alguna referencia a "Spen SDK de Samsung 1.5", que me claramente no tiene.

¿Alguna idea de qué podría estar causando esto y cómo solucionar el problema?

Respuesta

11

Problema resuelto al actualizar Proguard a la última versión 4.8.

ACTUALIZACIÓN: Mientras que la actualización a Proguard 4.8 resolvió el problema, volvió a ocurrir en otro proyecto que es casi idéntico al primero que presentó el problema (utiliza el mismo proyecto de biblioteca). Sabiendo que todo el entorno es idéntico, no sabía por qué sucedía esto (y por qué Proguard es tan inconsistente). Después de aproximadamente dos horas de perseguir mi cola, finalmente tuve una conjetura: el archivo proguard.cfg no se editó a través de Eclipse, sino a través de WinMerge. Tan pronto como copié sobre el (idéntico!) proguard.cfg del proyecto de trabajo, el problema desapareció.

Aparentemente, Proguard tiene un problema con CRLF contra LF.

2

El mensaje de error sugiere que un jar de entrada que se pasa a ProGuard está dañado. Puede verificar esto fácilmente después de la compilación fallida. Tal vez su partición de disco está llena.

+0

ya he publicado ayer mis resultados (junto con la solución correcta para mi caso particular). Mi partición de disco está lejos de estar llena. ¿Alguna idea de por qué Proguard no pudo usar un proguard.cfg que se ha parcheado a través de WinMerge? +1 por ahora. –

+2

Por lo que puedo decir, ProGuard maneja bien CR/LF. La causa raíz "Final inesperado de flujo de entrada ZLIB" para libproj1.jar (que viene de una clase en tiempo de ejecución de Java) sugiere fuertemente que el frasco está dañado. Esto es fácil de verificar. Las versiones de ProGuard o las configuraciones combinadas parecen incidentales. –

20

Lo resuelto por el cambio de OpenJDK 7 volver al Sun JDK 6.

Actualización:

El problema regresó usando JDK 6. Mi solución actual: apague Proyecto -> Crear automáticamente al exportar .

+6

+1 funciona para mí todo el tiempo. Aunque nadie tiene una solución más permanente? – 3c71

+2

Apagar composición automáticamente al exportar trabajado para mí. ¡Gracias! –

0

Esto puede ocurrir debido a que un archivo ha sido cambiado desde la última vez que se puso a prueba el proyecto, de manera que el proyecto no puede ser construida totalmente. Limpie y ejecute el proyecto en un dispositivo y luego intente exportar.

0

problema resuelto por comentar la línea en project.propterties es decir

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