今天在做混淆时,极光推送报错了,错误如下:(下面错误代码从别的文章摘录而来,因为已经解决,就不再显示我自己的错误信息了,基本是一致的,除了时间。)

<span style="font-size:18px;">[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) </span>
网上百度各种解决方案,尝试N次后仍然无效,最后同事把他的混淆文件发来全部替换,而不单纯是一个jar文件,最后完美解决。

下面简单把解决方案说一下吧:

1.在你的proguard.cfg加上代码:如果是使用新版本的ADT 将project.properties的中“# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”的“#”注释去掉,然后在proguard-android.txt中配置如下:

-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }

2.使用 SDK1.3.X 及以后的版本

3.替换D:\adt-bundle-windows-x86-20130729\sdk\tools中的proguard文件夹 点我立即下载最新版混淆文件

如此,便完美解决jPush混淆报错问题了。


更多相关文章

  1. android 中的 odex 文件
  2. Android 在资源文件(res/strings.xml)定义一维数组,间接定义二维数
  3. 使用Android Dropbox API检查Dropbox上是否存在文件
  4. Android中的内存储、外存储概念、文件操作与PC端的有些不同
  5. Android 打包VersionCode自增、APK文件名修改、上传蒲公英
  6. 【Android开发学习39】VideoView在GLSurfaceView之上显示的解决
  7. Android开发-直播视讯(3)-创建一个Ubuntu虚拟机并实现VMtools文
  8. Android 3.2 以上转屏,切换屏幕,横竖屏(onConfigurationChanged)会
  9. 关于Android资源文件中出现百分号的问题

随机推荐

  1. Android Binder入门指南之addService详解
  2. Android,谁动了我的内存
  3. 使用U3D 实现 Android(安卓)Launcher(提
  4. android 按行读取txt文本内容
  5. Android(安卓)Studio 工程.GitIgnore应该
  6. android 底部弹出提示框的实现方式
  7. Android 软件盘回车键修改
  8. Android不同版本的新特性
  9. 2013年01月小记
  10. Android中LayoutInflater实例