我在intellij中使用gradle proguard插件(不适用于android项目),将我的libraryjars指定为java home,将jars输入为jarname.jar,并将jars输出为jarname.pro.jar。我有一个proguard.txt文件用于配置,除了Main方法保留选项之外的所有内容。 Proguard抛出以下错误:
java.io.IOException:无法编写[/Users/user/src/name/build/libs/jarname.pro.jar](无法读取[/ Users / user / src / name / hci / build / libs / jarname.jar](重复的zip条目[c / a / a / a.class == jarname.jar:com / google / gson / ExclusionStrategy.class]))
根据这个source from the proguard website,我在jarname.jar中有重复的条目。手动检查jarname.jar显示没有重复的条目。我应该在哪里解决这个问题?
答案 0 :(得分:0)
查看此解决方案/ hack:https://stackoverflow.com/a/39584838/1919549
针对您的错误进行了调整,请将其添加到build.gradle:
import com.android.build.gradle.internal.pipeline.TransformTask
def deleteDuplicateJniFiles() {
def files = fileTree("/Users/user/src/name/hci/build/libs/") {
include "**/jarname.jar"
}
files.each { it.delete() }
}
tasks.withType(TransformTask) { pkgTask ->
pkgTask.doFirst { deleteDuplicateJniFiles() }
}
请注意,此命令实际上并不删除这些jar(您的重复错误意味着它们将被重新添加) - 只有配置/排除块才能执行此操作。我不知道他们为什么被包括在内,因为在我的项目中,他们在检查gradle app:dependencies时也没有重复。