Android - Proguard 重复 zip 输入错误
Posted
技术标签:
【中文标题】Android - Proguard 重复 zip 输入错误【英文标题】:Android - Proguard duplicate zip entry error 【发布时间】:2012-03-05 22:59:54 【问题描述】:我正在尝试在使用 android 库项目的 android 应用程序 中使用 proguard,但出现以下错误:
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
和几个其他依赖库。
我的猜测是这个问题与使用图书馆项目有关,并且 proguard 试图两次处理图书馆项目的条目。但我不确定我应该使用哪些选项来解决这个问题。
非常感谢任何建议/方向。
更新 1: 通过删除 -injars bin/classes
我能够解决这个问题。我的猜测是,因为 proguard 处理库项目和应用程序项目,所以库项目的 .class
文件被处理了两次。一次在库项目的bin/classes
文件夹中,另一次在应用程序项目的bin/classes
文件夹中。
【问题讨论】:
By removing the -injars bin/classes
- 那在哪里?
【参考方案1】:
问题中的 Update 1 解决了我的问题,现在我可以运行我的应用程序了。
这个答案只是为了将问题标记为已回答,我可以在两天后完成。
【讨论】:
我的错误有点不同,但我没有“-injars”子句。请帮帮我,厌倦了这个! Proguard 返回错误代码 1。请参阅控制台警告:无法写入资源 [META-INF/MANIFEST.MF](重复的 zip 条目 [android-support-v4.jar:META-INF/MANIFEST.MF])警告:可以't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [library.jar:META-INF/MANIFEST.MF]) @l33t,抱歉,久违了,我什么都不能告诉你。 @TheHippo,也许你可以试试这个:将相同的 android-support-v4.jar 复制到你的库需要的地方。请让我知道它是否有效。 @500865 我得到了这个错误。请给我解决方案。无法写入资源 [META-INF/MANIFEST.MF](重复的 zip 条目 [android-support-v4.jar:META-INF/MANIFEST.MF])警告:无法写入资源 [META-INF/MANIFEST. MF](重复的 zip 条目 [library.jar:META-INF/MANIFEST.MF])【参考方案2】:如果您收到重复的 zip 条目,这意味着它所说的内容,请打开罐子并检查是否有重复项。
例如检查你的 build.xml 不包含类似的东西
<zipfileset src="$file.reference.joda-time-2.2.jar" includes="**/*.class"/>
<zipfileset src="$file.reference.joda-time-2.2.jar" includes="**/*"/>
这将包括两次 .class 文件!
【讨论】:
以上是关于Android - Proguard 重复 zip 输入错误的主要内容,如果未能解决你的问题,请参考以下文章
Proguard 警告“无法写入资源 [META-INF/MANIFEST.MF](重复的 zip 条目)”
如何在android studio中启用proguard? [重复]
使用 ProGuard 和 Android 应用程序时资源重复