可能是“proguard.cfg”问题。它是否包括任何“-injars”?如果您的项目包含另一个项目作为库,则可以处理两次 jar。你能发布你的'proguard.cfg'吗?
摘自http://proguard.sourceforge.net/index.html#manual/troubleshooting.html:
您的输入 jar 包含多个具有相同名称的资源文件。ProGuard 像往常一样继续复制资源文件,跳过任何以前使用过的名称的文件。再一次,警告可能表明存在一些问题,因此建议删除重复项。一种方便的方法是在输入 jar 上指定过滤器。没有选项可以关闭这些警告。
选项1:
由于您无法发布“-injars”,请检查它们是否包含“android-support-v13.jar”或项目中包含的库,该库本身也包含“android-support-v13.jar”。
假设您在 IntelliJ IDEA 中使用 Ant 进行构建,则不能添加 -injars、-outjars 或 -libraryjars 选项;Ant 脚本已经为您做到了。
选项#2:
尽管警告是无害的,但干净的构建是一种快乐的构建,所以请尝试:
http://web.archive.org/web/20160206204259/http://www.dancartoon.com/2012/01/14/fixing-proguard-warning-cant-write-resource-meta-infmanifest-mf/
和
https://gist.github.com/paulpv/4439012
选项#3:
(!META-INF/MANIFEST.MF)
在每个“-injars”命令之后包含
-injars library.jar(!META-INF/MANIFEST.MF)
选项 #4: Android Proguard 重复定义
通过将第 3 方库移动到另一个目录(在我的情况下为“lib”)来解决此问题。然后添加
-injars lib/jmdns.jar
到 proguard.cfg 文件。
选项 #5: Android - Proguard 重复 zip 输入错误
如果您的 Proguard 配置文件包含以下行,请将其删除:
-injars bin/classes
选项 #6: 使用 proguard 的 Android 混淆应用程序会不断混淆库 jar - 是吗?
我发现另一种让 Proguard 单独离开库 jar 的方法是要求它保留它们的包名称,例如:
-keep class javax.** { *; } -keep class org.** { *; } -keep class twitter4j.** { *; }
选项 #7:
一个奇怪的解决方案(删除 src 文件夹中的 META-INF 文件夹)类似于此处的内容。