代码混淆时报jpush的错误

遇到ProGuard错误时,详细分析了错误代码、类定义重复、异常信息,并最终通过更新ProGuard jar文件解决了在计算堆栈大小时出现负值的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[2013-09-23 20:30:59 - TEST] Proguard returned with error code 1. See console 
[2013-09-23 20:30:59 - TEST] Note: there were 105 duplicate class definitions. 
[2013-09-23 20:30:59 - TEST] Unexpected error while computing stack sizes: 
[2013-09-23 20:30:59 - TEST]   Class       = [cn/jpush/android/api/InstrumentedActivity] 
[2013-09-23 20:30:59 - TEST]   Method      = [<clinit>()V] 
[2013-09-23 20:30:59 - TEST]   Exception   = [java.lang.IllegalArgumentException] (Stack size becomes negative after instruction [12] invokevirtual #57 in [cn/jpush/android/api/InstrumentedActivity.<clinit>()V]) 
[2013-09-23 20:30:59 - TEST] Unexpected error while editing code: 
[2013-09-23 20:30:59 - TEST]   Class       = [cn/jpush/android/api/InstrumentedActivity] 
[2013-09-23 20:30:59 - TEST]   Method      = [<clinit>()V] 
[2013-09-23 20:30:59 - TEST]   Exception   = [java.lang.IllegalArgumentException] (Stack size becomes negative after instruction [12] invokevirtual #57 in [cn/jpush/android/api/InstrumentedActivity.<clinit>()V]) 
[2013-09-23 20:30:59 - TEST] java.lang.IllegalArgumentException: Stack size becomes negative after instruction [12] invokevirtual #57 in [cn/jpush/android/api/InstrumentedActivity.<clinit>()V] 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.attribute.visitor.StackSizeComputer.evaluateInstructionBlock(StackSizeComputer.java:334) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.attribute.visitor.StackSizeComputer.visitBranchInstruction(StackSizeComputer.java:197) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.instruction.BranchInstruction.accept(BranchInstruction.java:140) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.attribute.visitor.StackSizeComputer.evaluateInstructionBlock(StackSizeComputer.java:355) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.attribute.visitor.StackSizeComputer.visitCodeAttribute0(StackSizeComputer.java:153) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.attribute.visitor.StackSizeComputer.visitCodeAttribute(StackSizeComputer.java:110) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.editor.StackSizeUpdater.visitCodeAttribute(StackSizeUpdater.java:49) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.editor.CodeAttributeEditor.visitCodeAttribute0(CodeAttributeEditor.java:376) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.editor.CodeAttributeEditor.visitCodeAttribute(CodeAttributeEditor.java:311) 
[2013-09-23 20:30:59 - TEST]     at proguard.optimize.DuplicateInitializerInvocationFixer.visitCodeAttribute(DuplicateInitializerInvocationFixer.java:92) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.attribute.CodeAttribute.accept(CodeAttribute.java:101) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.ProgramMethod.attributesAccept(ProgramMethod.java:79) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.attribute.visitor.AllAttributeVisitor.visitProgramMember(AllAttributeVisitor.java:95) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.util.SimplifiedVisitor.visitProgramMethod(SimplifiedVisitor.java:91) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.ProgramMethod.accept(ProgramMethod.java:71) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.ProgramClass.methodsAccept(ProgramClass.java:504) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.visitor.AllMethodVisitor.visitProgramClass(AllMethodVisitor.java:47) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.ProgramClass.accept(ProgramClass.java:346) 
[2013-09-23 20:30:59 - TEST]     at proguard.classfile.ClassPool.classesAccept(ClassPool.java:116) 
[2013-09-23 20:30:59 - TEST]     at proguard.optimize.Optimizer.execute(Optimizer.java:500) 
[2013-09-23 20:30:59 - TEST]     at proguard.ProGuard.optimize(ProGuard.java:306) 
[2013-09-23 20:30:59 - TEST]     at proguard.ProGuard.execute(ProGuard.java:115) 

[2013-09-23 20:30:59 - TEST]     at proguard.ProGuard.main(ProGuard.java:492) 


我的解决方法是:下载最新的proguard.jar并替换Android Sdk "tools\proguard\lib\proguard.jar"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值