Android - Proguard重复zip条目错误

时间:2012-02-14 15:05:10

标签: android proguard

我正在尝试在 android应用程序中使用proguard,它使用 android库项目,我收到以下错误:

java.io.IOException: Can't write 
    [/private/var/folders/Pg/PgUpPJQ-E5qxL7jX6kpdCE+++TI/-Tmp-/android_3140050575281008652.jar] 
    (Can't read [proguard.ClassPathEntry@1f8d244] 
    (Duplicate zip entry 
    [be.class == android_144638064543155619.jar:com/comp/dp/library/R$anim.class]))
at proguard.OutputWriter.writeOutput(OutputWriter.java:224)
at proguard.OutputWriter.execute(OutputWriter.java:120)
at proguard.ProGuard.writeOutput(ProGuard.java:391)
at proguard.ProGuard.execute(ProGuard.java:152)
at proguard.ProGuard.main(ProGuard.java:499)

我的proguard.cfg文件是this,还有一些-libraryjars引用rt.jar和其他几个依赖库。

我的猜测是这个问题与使用Library Project有关,而proguard正在尝试两次处理来自库项目的条目。但我不确定应该用哪种方法来解决这个问题。

非常感谢任何建议/指示。

更新1:删除-injars bin/classes我能够解决此问题。我的猜测是因为proguard处理库项目和应用程序项目,库项目的.class文件被处理了两次。进入库项目的bin/classes文件夹,然后再进入应用程序项目的bin/classes文件夹。

2 个答案:

答案 0 :(得分:4)

问题中的更新1 解决了我的问题,现在我可以运行我的应用程序了。

这个答案只是为了将问题标记为两天后我可以回答的问题。

答案 1 :(得分:2)

如果您获得重复的zip条目,则表示它所说的内容,打开jar并检查重复项。

例如,检查build.xml是否包含

之类的内容
<zipfileset src="${file.reference.joda-time-2.2.jar}" includes="**/*.class"/>
<zipfileset src="${file.reference.joda-time-2.2.jar}" includes="**/*"/>

那将包括.class文件两次!