libgdx的android工程打包出错处理一则

简介:

 这个问题我印象中遇到3次了,都是稍微动了一下工程配置或者升级了一下什么东西就容易出现。由于出现没啥征兆,导致每次解决也浪费好多时间,特别记录一下,下次能快点处理掉。

报错日志如下:

 
  1. [2013-03-07 10:09:51 - pirateage-android] Proguard returned with error code 1. See console 
  2. [2013-03-07 10:09:51 - pirateage-android] Note: there were 2626 duplicate class definitions. 
  3. [2013-03-07 10:09:51 - pirateage-android]       You should check if you need to specify additional program jars. 
  4. [2013-03-07 10:09:51 - pirateage-android] Unexpected error while computing stack sizes: 
  5. [2013-03-07 10:09:51 - pirateage-android]   Class       = [com/badlogic/gdx/graphics/glutils/ShaderProgram] 
  6. [2013-03-07 10:09:51 - pirateage-android]   Method      = [loadShader(ILjava/lang/String;)I] 
  7. [2013-03-07 10:09:51 - pirateage-android]   Exception   = [java.lang.IllegalArgumentException] (Stack size becomes negative after instruction [105] putfield #88 in [com/badlogic/gdx/graphics/glutils/ShaderProgram.loadShader(ILjava/lang/String;)I]) 
  8. [2013-03-07 10:09:51 - pirateage-android] java.lang.IllegalArgumentException: Stack size becomes negative after instruction [105] putfield #88 in [com/badlogic/gdx/graphics/glutils/ShaderProgram.loadShader(ILjava/lang/String;)I] 
  9. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.attribute.visitor.StackSizeComputer.evaluateInstructionBlock(StackSizeComputer.java:334) 
  10. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.attribute.visitor.StackSizeComputer.visitBranchInstruction(StackSizeComputer.java:197) 
  11. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.instruction.BranchInstruction.accept(BranchInstruction.java:140) 
  12. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.attribute.visitor.StackSizeComputer.evaluateInstructionBlock(StackSizeComputer.java:355) 
  13. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.attribute.visitor.StackSizeComputer.visitCodeAttribute0(StackSizeComputer.java:153) 
  14. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.attribute.visitor.StackSizeComputer.visitCodeAttribute(StackSizeComputer.java:110) 
  15. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.editor.StackSizeUpdater.visitCodeAttribute(StackSizeUpdater.java:49) 
  16. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.editor.MemberReferenceFixer.visitCodeAttribute(MemberReferenceFixer.java:322) 
  17. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.attribute.CodeAttribute.accept(CodeAttribute.java:101) 
  18. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.ProgramMethod.attributesAccept(ProgramMethod.java:79) 
  19. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.editor.MemberReferenceFixer.visitProgramMember(MemberReferenceFixer.java:285) 
  20. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.util.SimplifiedVisitor.visitProgramMethod(SimplifiedVisitor.java:91) 
  21. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.ProgramMethod.accept(ProgramMethod.java:71) 
  22. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.ProgramClass.methodsAccept(ProgramClass.java:504) 
  23. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.editor.MemberReferenceFixer.visitProgramClass(MemberReferenceFixer.java:82) 
  24. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.ProgramClass.accept(ProgramClass.java:346) 
  25. [2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.ClassPool.classesAccept(ClassPool.java:116) 
  26. [2013-03-07 10:09:51 - pirateage-android]   at proguard.optimize.Optimizer.execute(Optimizer.java:457) 
  27. [2013-03-07 10:09:51 - pirateage-android]   at proguard.ProGuard.optimize(ProGuard.java:306) 
  28. [2013-03-07 10:09:51 - pirateage-android]   at proguard.ProGuard.execute(ProGuard.java:115) 
  29. [2013-03-07 10:09:51 - pirateage-android]   at proguard.ProGuard.main(ProGuard.java:492) 

    反复比较libgdx给的示例工程和自己工程的区别,发现自己工程不知道为什么多出来一个android dependencies的lib库合集,里面包含了android-4.2.jar,这个就和我给工程默认添加的android 2.2类库android.jar是有重复的。后来查证出现重复类库打包就容易出现“Conversion to Dalvik format failed with error 1”的报错。

    最后删掉这个类库合集,重新打包就对了。但是有个地方比较奇怪,就是export的里面不能带有gdx-crontrollers和gdx-crontrollers-android的工程,否则会有一些super class找不到的问题,可能这个地方用到了比android 2.2类库更高级类库里面的东西,但是不带上这两个包也没看出来有任何的差异,这个没深入研究。至此总算顺利打包。


本文转自passover 51CTO博客,原文链接:http://blog.51cto.com/passover/1149061,如需转载请自行联系原作者

相关文章
|
4天前
|
敏捷开发 Java 机器人
云效产品使用常见问题之打包后的Android应用获取下载地址失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4天前
|
Java 关系型数据库 数据库
Android App连接真机步骤与APP的开发语言和工程结构讲解以及运行实例(超详细必看)
Android App连接真机步骤与APP的开发语言和工程结构讲解以及运行实例(超详细必看)
38 0
|
3天前
|
设计模式 缓存 Java
补齐Android技能树——从AGP构建过程到APK打包过程,安卓rxjava面试
补齐Android技能树——从AGP构建过程到APK打包过程,安卓rxjava面试
|
4天前
|
Java Linux 调度
Android 打包分析
Android 打包分析
13 2
|
4天前
|
Java Android开发
Android module 打包成aar或jar
Android module 打包成aar或jar
14 0
|
4天前
|
监控 Devops Java
大型IM工程重构实践:企业微信Android端的重构之路
本文将探讨我们在大型IM工程实践中采用的一些行之有效的重构方法和实例,以及如何让一个大型软件系统持续保持活力。
49 0
|
4天前
|
Java Android开发
[Android AIDL] --- AIDL工程搭建
[Android AIDL] --- AIDL工程搭建
24 0
|
4天前
|
Java 开发工具 Android开发
cordova打包android apk
cordova打包android apk
18 0
|
4天前
|
Android开发 数据安全/隐私保护
打包 android apk签名
打包 android apk签名
27 0
|
4天前
|
JavaScript 前端开发 Java
React-Native Android打包
React-Native Android打包
33 0