2012-02-14 36 views
5

Proguard "Proguard hata kodu 1 ile döndü" ile kilitleniyor farklı akım boyutları vardır ve konsolda bu çarpışma:Proguard: IllegalArgumentException: Yığınlar,

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) 

ben bir deneyin catch bloğuna yere daralmış var bir IOException. Bu try catch bloğunu açıklarsam, uygulamada başka bir yerde başka bir IOException try catch bloğu için bu hatayı gösterir. Bunu açıklarsam, o zaman başarılı bir şekilde inşa eder.

Her iki yerde de proguard IOException try catch bloğu üzerinde çöküyor gibi görünüyor. Bu bloklar, daha önce hiç sorun yaşamadan, proguardın içinden geçen önceki yapılarda kodda yer almaktadır.

Ayrıca, herhangi bir hata vermeyen diğer IOException yakalama blokları vardır.

Bunu proguard 4.5, 4.6 ve 4.7 ile denedim ve hepsi başarısız oldu.

Herhangi bir fikrin var mı?

Teşekkür

cevap

8

Bu ProGuard bir hata olduğu anlaşılıyor. ProGuard's bug tracker, tercihen sorunu yeniden oluşturmama izin veren küçük bir test durumu ile oturum açabilirsiniz veya bana mail it (Eric, ProGuard geliştiricisi) yapabilirsiniz.

Şu an için, optimizasyonu devre dışı bırakarak (-dontoptimize seçeneği ile) sorunu giderebilirsiniz.

+0

ilk kapalı, gerçekten müthiş ve kullanımı kolay ProGuard için çok teşekkürler olduğunu. Devam ettim ve bir hata yaptım. Bu yığın taşması sonrası tamamlandığını yapmak için, https://sourceforge.net/tracker/?func=detail&aid=3487940&group_id=54750&atid=474704 tekrar teşekkürler. – cottonBallPaws

+0

hala ProGuard sürüm 5.2.1 ile gerçekleşir :-( –

+0

5.3.3 Ayrıca burada çözüm nedir? – batmaci

0

Bu hatayı xamarin formları projesi için 5.3.3 için aldım. benim proguard klasöründe eksik dosyalar vardı, çünkü proguard'ın bir sürümünü kendi web sitelerinden indirdiğinizde, indirilen zip dosyasında bu txt dosyalarını kullanmıyorsunuz. Eski proguard'ınızı yedeklemek ve bu dosyaları oradan kopyalamak her zaman daha iyidir ya da sadece inanıyorum.

enter image description here