您的位置:首页 > 移动开发 > Android开发

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

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

报错日志如下:

[2013-03-07 10:09:51 - pirateage-android] Proguard returned with error code 1. See console
[2013-03-07 10:09:51 - pirateage-android] Note: there were 2626 duplicate class definitions.
[2013-03-07 10:09:51 - pirateage-android]       You should check if you need to specify additional program jars.
[2013-03-07 10:09:51 - pirateage-android] Unexpected error while computing stack sizes:
[2013-03-07 10:09:51 - pirateage-android]   Class       = [com/badlogic/gdx/graphics/glutils/ShaderProgram]
[2013-03-07 10:09:51 - pirateage-android]   Method      = [loadShader(ILjava/lang/String;)I]
[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])
[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]
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.attribute.visitor.StackSizeComputer.evaluateInstructionBlock(StackSizeComputer.java:334)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.attribute.visitor.StackSizeComputer.visitBranchInstruction(StackSizeComputer.java:197)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.instruction.BranchInstruction.accept(BranchInstruction.java:140)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.attribute.visitor.StackSizeComputer.evaluateInstructionBlock(StackSizeComputer.java:355)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.attribute.visitor.StackSizeComputer.visitCodeAttribute0(StackSizeComputer.java:153)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.attribute.visitor.StackSizeComputer.visitCodeAttribute(StackSizeComputer.java:110)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.editor.StackSizeUpdater.visitCodeAttribute(StackSizeUpdater.java:49)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.editor.MemberReferenceFixer.visitCodeAttribute(MemberReferenceFixer.java:322)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.attribute.CodeAttribute.accept(CodeAttribute.java:101)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.ProgramMethod.attributesAccept(ProgramMethod.java:79)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.editor.MemberReferenceFixer.visitProgramMember(MemberReferenceFixer.java:285)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.util.SimplifiedVisitor.visitProgramMethod(SimplifiedVisitor.java:91)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.ProgramMethod.accept(ProgramMethod.java:71)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.ProgramClass.methodsAccept(ProgramClass.java:504)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.editor.MemberReferenceFixer.visitProgramClass(MemberReferenceFixer.java:82)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.ProgramClass.accept(ProgramClass.java:346)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.classfile.ClassPool.classesAccept(ClassPool.java:116)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.optimize.Optimizer.execute(Optimizer.java:457)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.ProGuard.optimize(ProGuard.java:306)
[2013-03-07 10:09:51 - pirateage-android]   at proguard.ProGuard.execute(ProGuard.java:115)
[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类库更高级类库里面的东西,但是不带上这两个包也没看出来有任何的差异,这个没深入研究。至此总算顺利打包。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: