libgdx的android工程打包出错处理一则
2013-03-07 11:39
447 查看
这个问题我印象中遇到3次了,都是稍微动了一下工程配置或者升级了一下什么东西就容易出现。由于出现没啥征兆,导致每次解决也浪费好多时间,特别记录一下,下次能快点处理掉。
报错日志如下:
反复比较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类库更高级类库里面的东西,但是不带上这两个包也没看出来有任何的差异,这个没深入研究。至此总算顺利打包。
报错日志如下:
[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类库更高级类库里面的东西,但是不带上这两个包也没看出来有任何的差异,这个没深入研究。至此总算顺利打包。
相关文章推荐
- Android使用ADT14.0后,原来的工程打包出错
- Android程序自动化打包(ant多工程)及相关问题处理
- android中打包带有Activity以及资源文件的jar包在工程中调用的方法
- android工程混淆代码打包的APK安装后无法启动
- ubuntu10 集成android创建工程出错解决
- android 使用 android-support-v4.jar 混淆打包出错
- Android混淆打包出错,出现类似 there were 133 duplicate class definitions.
- android工程没有R文件导致出错
- ionic Android编译打包出错:Failed to install 'cordova-plugin-code-push'
- 在eclipse中将android工程打包成apk
- 对于Android stdio 新建工程出错的经验
- [Android]Android中运行OpenGL工程出错:java.lang.IllegalArgumentException: Must use a native order direct Buffer
- Android工程打包成jar文件,并且将工程中引用的jar一起打入新的jar文件中
- 在eclipse中将android工程打包成apk
- (转)通过ant脚本,编译打包android工程
- Unity脚本打包android工程
- android中打包含有Activity以及资源文件的jar包在工程中调用
- maven(android-maven-plugin3.8.0)打包apk无法启动,apklib依赖包的资源索引出错(R文件与主模块冲突)问题解析
- 命令行下的android工程的创建、编译与打包
- Android Studio 将引用第三方jar包的android工程打包成jar包