解决混淆报错问题-打包签名出现问题的解决方法

来源:互联网 发布:魅族 智能手表mix 知乎 编辑:程序博客网 时间:2024/06/10 06:06

这个问题比较烦人,主要是因为使用了激光推送的功能,然后打包文件发布apk的时候出现了问题,导致了以下的一大堆的错误,不过大家勿急,有解决办法。
[2013-11-28 13:17:19 - Sjh_android] Proguard returned with error code 1. See console
[2013-11-28 13:17:19 - Sjh_android] Note: there were 426 duplicate class definitions.
[2013-11-28 13:17:19 - Sjh_android] You should check if you need to specify additional program jars.
[2013-11-28 13:17:19 - Sjh_android] Unexpected error while computing stack sizes:
[2013-11-28 13:17:19 - Sjh_android] Class = [cn/jpush/android/api/InstrumentedActivity]
[2013-11-28 13:17:19 - Sjh_android] Method = [()V]
[2013-11-28 13:17:19 - Sjh_android] Exception = [java.lang.IllegalArgumentException] (Stack size becomes negative

after instruction [12] invokevirtual #57 in [cn/jpush/android/api/InstrumentedActivity.()V])
[2013-11-28 13:17:19 - Sjh_android] Unexpected error while editing code:
[2013-11-28 13:17:19 - Sjh_android] Class = [cn/jpush/android/api/InstrumentedActivity]
[2013-11-28 13:17:19 - Sjh_android] Method = [()V]
[2013-11-28 13:17:19 - Sjh_android] Exception = [java.lang.IllegalArgumentException] (Stack size becomes negative

after instruction [12] invokevirtual #57 in [cn/jpush/android/api/InstrumentedActivity.()V])
[2013-11-28 13:17:19 - Sjh_android] java.lang.IllegalArgumentException: Stack size becomes negative after instruction

[12] invokevirtual #57 in [cn/jpush/android/api/InstrumentedActivity.()V]
[2013-11-28 13:17:19 - Sjh_android] at

proguard.classfile.attribute.visitor.StackSizeComputer.evaluateInstructionBlock(StackSizeComputer.java:334)
[2013-11-28 13:17:19 - Sjh_android] at

proguard.classfile.attribute.visitor.StackSizeComputer.visitBranchInstruction(StackSizeComputer.java:197)
[2013-11-28 13:17:19 - Sjh_android] at proguard.classfile.instruction.BranchInstruction.accept

(BranchInstruction.java:140)
[2013-11-28 13:17:19 - Sjh_android] at

proguard.classfile.attribute.visitor.StackSizeComputer.evaluateInstructionBlock(StackSizeComputer.java:355)
[2013-11-28 13:17:19 - Sjh_android] at

proguard.classfile.attribute.visitor.StackSizeComputer.visitCodeAttribute0(StackSizeComputer.java:153)
[2013-11-28 13:17:19 - Sjh_android] at proguard.classfile.attribute.visitor.StackSizeComputer.visitCodeAttribute

(StackSizeComputer.java:110)
[2013-11-28 13:17:19 - Sjh_android] at proguard.classfile.editor.StackSizeUpdater.visitCodeAttribute

(StackSizeUpdater.java:49)
[2013-11-28 13:17:19 - Sjh_android] at proguard.classfile.editor.CodeAttributeEditor.visitCodeAttribute0

(CodeAttributeEditor.java:376)
[2013-11-28 13:17:19 - Sjh_android] at proguard.classfile.editor.CodeAttributeEditor.visitCodeAttribute

(CodeAttributeEditor.java:311)
[2013-11-28 13:17:19 - Sjh_android] at proguard.optimize.DuplicateInitializerInvocationFixer.visitCodeAttribute

(DuplicateInitializerInvocationFixer.java:92)
[2013-11-28 13:17:19 - Sjh_android] at proguard.classfile.attribute.CodeAttribute.accept(CodeAttribute.java:101)
[2013-11-28 13:17:19 - Sjh_android] at proguard.classfile.ProgramMethod.attributesAccept(ProgramMethod.java:79)
[2013-11-28 13:17:19 - Sjh_android] at

proguard.classfile.attribute.visitor.AllAttributeVisitor.visitProgramMember(AllAttributeVisitor.java:95)
[2013-11-28 13:17:19 - Sjh_android] at proguard.classfile.util.SimplifiedVisitor.visitProgramMethod

(SimplifiedVisitor.java:91)
[2013-11-28 13:17:19 - Sjh_android] at proguard.classfile.ProgramMethod.accept(ProgramMethod.java:71)
[2013-11-28 13:17:19 - Sjh_android] at proguard.classfile.ProgramClass.methodsAccept(ProgramClass.java:504)
[2013-11-28 13:17:19 - Sjh_android] at proguard.classfile.visitor.AllMethodVisitor.visitProgramClass

(AllMethodVisitor.java:47)
[2013-11-28 13:17:19 - Sjh_android] at proguard.classfile.ProgramClass.accept(ProgramClass.java:346)
[2013-11-28 13:17:19 - Sjh_android] at proguard.classfile.ClassPool.classesAccept(ClassPool.java:116)
[2013-11-28 13:17:19 - Sjh_android] at proguard.optimize.Optimizer.execute(Optimizer.java:500)
[2013-11-28 13:17:19 - Sjh_android] at proguard.ProGuard.optimize(ProGuard.java:306)
[2013-11-28 13:17:19 - Sjh_android] at proguard.ProGuard.execute(ProGuard.java:115)
[2013-11-28 13:17:19 - Sjh_android] at proguard.ProGuard.main(ProGuard.java:492)
[2013-11-28 13:20:10 - Sjh_android] Proguard returned with error code 1. See console
[2013-11-28 13:20:10 - Sjh_android] Note: there were 426 duplicate class definitions.
[2013-11-28 13:20:10 - Sjh_android] You should check if you need to specify additional program jars.
[2013-11-28 13:20:10 - Sjh_android] Unexpected error while computing stack sizes:
[2013-11-28 13:20:10 - Sjh_android] Class = [cn/jpush/android/api/InstrumentedActivity]
[2013-11-28 13:20:10 - Sjh_android] Method = [()V]
[2013-11-28 13:20:10 - Sjh_android] Exception = [java.lang.IllegalArgumentException] (Stack size becomes negative

after instruction [12] invokevirtual #57 in [cn/jpush/android/api/InstrumentedActivity.()V])
[2013-11-28 13:20:10 - Sjh_android] Unexpected error while editing code:
[2013-11-28 13:20:10 - Sjh_android] Class = [cn/jpush/android/api/InstrumentedActivity]
[2013-11-28 13:20:10 - Sjh_android] Method = [()V]
[2013-11-28 13:20:10 - Sjh_android] Exception = [java.lang.IllegalArgumentException] (Stack size becomes negative

after instruction [12] invokevirtual #57 in [cn/jpush/android/api/InstrumentedActivity.()V])
[2013-11-28 13:20:10 - Sjh_android] java.lang.IllegalArgumentException: Stack size becomes negative after instruction

[12] invokevirtual #57 in [cn/jpush/android/api/InstrumentedActivity.()V]
[2013-11-28 13:20:10 - Sjh_android] at

proguard.classfile.attribute.visitor.StackSizeComputer.evaluateInstructionBlock(StackSizeComputer.java:334)
[2013-11-28 13:20:10 - Sjh_android] at

proguard.classfile.attribute.visitor.StackSizeComputer.visitBranchInstruction(StackSizeComputer.java:197)
[2013-11-28 13:20:10 - Sjh_android] at proguard.classfile.instruction.BranchInstruction.accept

(BranchInstruction.java:140)
[2013-11-28 13:20:10 - Sjh_android] at

proguard.classfile.attribute.visitor.StackSizeComputer.evaluateInstructionBlock(StackSizeComputer.java:355)
[2013-11-28 13:20:10 - Sjh_android] at

proguard.classfile.attribute.visitor.StackSizeComputer.visitCodeAttribute0(StackSizeComputer.java:153)
[2013-11-28 13:20:10 - Sjh_android] at proguard.classfile.attribute.visitor.StackSizeComputer.visitCodeAttribute

(StackSizeComputer.java:110)
[2013-11-28 13:20:10 - Sjh_android] at proguard.classfile.editor.StackSizeUpdater.visitCodeAttribute

(StackSizeUpdater.java:49)
[2013-11-28 13:20:10 - Sjh_android] at proguard.classfile.editor.CodeAttributeEditor.visitCodeAttribute0

(CodeAttributeEditor.java:376)
[2013-11-28 13:20:10 - Sjh_android] at proguard.classfile.editor.CodeAttributeEditor.visitCodeAttribute

(CodeAttributeEditor.java:311)
[2013-11-28 13:20:10 - Sjh_android] at proguard.optimize.DuplicateInitializerInvocationFixer.visitCodeAttribute

(DuplicateInitializerInvocationFixer.java:92)
[2013-11-28 13:20:10 - Sjh_android] at proguard.classfile.attribute.CodeAttribute.accept(CodeAttribute.java:101)
[2013-11-28 13:20:10 - Sjh_android] at proguard.classfile.ProgramMethod.attributesAccept(ProgramMethod.java:79)
[2013-11-28 13:20:10 - Sjh_android] at

proguard.classfile.attribute.visitor.AllAttributeVisitor.visitProgramMember(AllAttributeVisitor.java:95)
[2013-11-28 13:20:10 - Sjh_android] at proguard.classfile.util.SimplifiedVisitor.visitProgramMethod

(SimplifiedVisitor.java:91)
[2013-11-28 13:20:10 - Sjh_android] at proguard.classfile.ProgramMethod.accept(ProgramMethod.java:71)
[2013-11-28 13:20:10 - Sjh_android] at proguard.classfile.ProgramClass.methodsAccept(ProgramClass.java:504)
[2013-11-28 13:20:10 - Sjh_android] at proguard.classfile.visitor.AllMethodVisitor.visitProgramClass

(AllMethodVisitor.java:47)
[2013-11-28 13:20:10 - Sjh_android] at proguard.classfile.ProgramClass.accept(ProgramClass.java:346)
[2013-11-28 13:20:10 - Sjh_android] at proguard.classfile.ClassPool.classesAccept(ClassPool.java:116)
[2013-11-28 13:20:10 - Sjh_android] at proguard.optimize.Optimizer.execute(Optimizer.java:500)
[2013-11-28 13:20:10 - Sjh_android] at proguard.ProGuard.optimize(ProGuard.java:306)
[2013-11-28 13:20:10 - Sjh_android] at proguard.ProGuard.execute(ProGuard.java:115)
[2013-11-28 13:20:10 - Sjh_android] at proguard.ProGuard.main(ProGuard.java:492)

出现上面的错误是因为工程中使用了极光推送的功能jar包,打包出现了问题。
下面给出解决法案:
如何在代码时混淆忽略 jpush-sdk-release.jar?
1、请下载最新的proguard.jar,
并替换你Android Sdk “tools\proguard\lib\proguard.jar”
2、在你的proguard.cfg加上代码:
-dontwarn cn.jpush.**
-keep class cn.jpush.* { ; }
3、请使用 SDK1.3.X 及以后的版本

按照上面的做法即可解决问题。

第一步下载proguard.jar,下面我给出我的该jar包的下载地址,即可解决问题:下载地址proguard.jar
下载之后到Android Sdk “tools\proguard\lib\proguard.jar”目录下把同名的文件替换掉即可。

第二部是代码混淆,在工程文件的根目录下面的proguard.cfg文件中添加上面的那两句代码即可。如果工程根目录下面没有这个proguard.cfg文件,那就新建一个同名的文件即可。

按照上面的做法完美解决问题。记录下来,以后可能用得着,如果帮你解决了问题,记得给个好评呀!!!^_^【握手】

0 0