Proguard返回错误代码1.从ADT 16更新到18

时间:2012-06-11 12:43:11

标签: android adt proguard

我曾经Proguard 4.6完美地在Eclipse 3.6.2上导出已签名的应用程序。

但是,一旦我将我的ADT + SDK从16.0.0.v201112150204-238534更新为18.0.0.v201203301601-306762,我就无法再导出已签名的应用程序(调试版本工作正常)。相反,我在控制台中收到以下错误日志:

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

我在搜索SO寻找线索,但我能找到的唯一相关主题是关于Proguard 4.7 with Eclipse SDK 3.7.1的一些参考“三星的SPen SDK 1.5”,我显然没有。

知道可能导致此问题的原因以及如何解决问题?

4 个答案:

答案 0 :(得分:20)

我通过从OpenJDK 7切换回Sun JDK 6来解决它。

更新

使用JDK 6回来了问题。 我目前的解决方案:关闭项目 - >导出时自动构建。

答案 1 :(得分:11)

通过将Proguard更新到最新的4.8来解决问题。

更新:虽然更新到Proguard 4.8解决了问题,但它在另一个项目中重新出现,该项目几乎与首次出现问题的项目相同(它使用相同的库项目)。知道整个环境是相同的,我不知道为什么会这样(为什么Proguard如此不一致)。经过大约两个小时追逐我的尾巴,我终于猜到了:proguard.cfg文件不是通过Eclipse编辑的,而是通过WinMerge编辑的。一旦我从工作项目中复制了(相同的!)proguard.cfg,问题就消失了。

显然,Proguard在CRLF与LF之间存在问题。

答案 2 :(得分:2)

错误消息表明传递给ProGuard的输入jar已损坏。在构建失败后,您可以轻松地检查这一点。也许您的磁盘分区已满。

答案 3 :(得分:0)

通过在project.properties ep>中注释行来解决问题

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