Proguard:IllegalArgumentException:堆栈具有不同的当前大小

时间:2012-02-14 18:12:44

标签: android proguard

Proguard崩溃了“Proguard返回错误代码1”,并且在控制台崩溃:

java.lang.IllegalArgumentException: Stacks have different current sizes [0] and [1]
at proguard.evaluation.Stack.generalize(Stack.java:125)
at proguard.evaluation.TracedStack.generalize(TracedStack.java:140)
at proguard.optimize.evaluation.PartialEvaluator.evaluateSingleInstructionBlock(PartialEvaluator.java:683)
at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlock(PartialEvaluator.java:587)
at proguard.optimize.evaluation.PartialEvaluator.visitExceptionInfo(PartialEvaluator.java:1078)
at proguard.classfile.visitor.ExceptionHandlerFilter.visitExceptionInfo(ExceptionHandlerFilter.java:67)
at proguard.classfile.attribute.CodeAttribute.exceptionsAccept(CodeAttribute.java:186)
at proguard.optimize.evaluation.PartialEvaluator.evaluateExceptionHandlers(PartialEvaluator.java:1018)
at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlockAndExceptionHandlers(PartialEvaluator.java:567)
at proguard.optimize.evaluation.PartialEvaluator.visitCodeAttribute0(PartialEvaluator.java:264)
at proguard.optimize.evaluation.PartialEvaluator.visitCodeAttribute(PartialEvaluator.java:181)
at proguard.optimize.evaluation.LivenessAnalyzer.visitCodeAttribute(LivenessAnalyzer.java:205)
at proguard.optimize.evaluation.VariableOptimizer.visitCodeAttribute(VariableOptimizer.java:105)
at proguard.classfile.attribute.CodeAttribute.accept(CodeAttribute.java:101)
at proguard.classfile.ProgramMethod.attributesAccept(ProgramMethod.java:79)
at proguard.classfile.attribute.visitor.AllAttributeVisitor.visitProgramMember(AllAttributeVisitor.java:95)
at proguard.classfile.util.SimplifiedVisitor.visitProgramMethod(SimplifiedVisitor.java:91)
at proguard.classfile.ProgramMethod.accept(ProgramMethod.java:71)
at proguard.classfile.ProgramClass.methodsAccept(ProgramClass.java:504)
at proguard.classfile.visitor.AllMethodVisitor.visitProgramClass(AllMethodVisitor.java:47)
at proguard.classfile.ProgramClass.accept(ProgramClass.java:346)
at proguard.classfile.ClassPool.classesAccept(ClassPool.java:116)
at proguard.optimize.Optimizer.execute(Optimizer.java:833)
at proguard.ProGuard.optimize(ProGuard.java:306)
at proguard.ProGuard.execute(ProGuard.java:115)
at proguard.ProGuard.main(ProGuard.java:492)

我已将其缩小为尝试catch块以获取IOException。如果我注释掉try catch块那么它会在应用程序的其他地方为另一个IOException尝试catch块显示此错误。如果我评论那个,那么它就会成功构建。

所以在这两个地方,proguard似乎都在崩溃IOException尝试catch块。这些块已经存放在之前构建的代码中,之前没有遇到任何麻烦。

此外,还有其他IOException catch块不会出现任何错误。

我用proguard 4.5,4.6和4.7尝试了这一切,但都失败了。

有什么想法吗?

谢谢

2 个答案:

答案 0 :(得分:10)

这似乎是ProGuard中的一个错误。你可以在ProGuard's bug tracker上登录,最好是一个允许我重现问题的小测试用例,或者你可以mail it给我(Eric,ProGuard开发人员)。

目前,您可以通过关闭优化来解决问题(使用选项-dontoptimize)。

答案 1 :(得分:0)

我在xamarin表单项目中获得了proguard 5.3.3的错误。我的问题是我的proguard文件夹中缺少文件,因为当您从他们的网站下载proguard版本时,您在下载的zip中没有这些txt文件。最好备份旧的proguard并从那里复制这些文件,或者你可以手动创建我相信。

enter image description here