Android上的Libgdx游戏崩溃
我使用libgdx制作了一款游戏,并且它在桌面和android之前运行良好。我不确定是否因为我开始使用box2d物理引擎和liquidfun粒子,基本上发生的是,当我点击对我的游戏进行游戏时,它开始加载,然后加载它后应该去游戏画面,但它崩溃,然后说:“不幸的是,myGame已停止“。Android上的Libgdx游戏崩溃
错误消息:
E/AndroidRuntime: FATAL EXCEPTION: GLThread 3764
Process: com.nivekbryan.puffypuff, PID: 8416
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/badlogic/gdx/physics/box2d/World;
我跟着这个setup tutorial如何端口liquidfun库,它从2014年起有点老了。 游戏作为桌面应用程序运行正常。
这是我的build.gradle文件(依赖关系),可能是什么问题?为什么作为桌面应用程序而不是作为android应用程序?
buildscript {
repositories {
mavenLocal()
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
jcenter()
}
dependencies {
classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
classpath 'com.android.tools.build:gradle:2.0.0'
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.1.0'
}
}
allprojects {
apply plugin: "eclipse"
apply plugin: "idea"
version = '1.0'
ext {
appName = "Puffy Puff"
gdxVersion = '1.9.3'
roboVMVersion = '2.1.0'
box2DLightsVersion = '1.4'
ashleyVersion = '1.7.0'
aiVersion = '1.8.0'
admobVersion = '8.3.0'
}
repositories {
mavenLocal()
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url "https://oss.sonatype.org/content/repositories/releases/" }
}
}
project(":desktop") {
apply plugin: "java"
dependencies {
compile project(":core")
compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
compile fileTree(dir: 'libs', include: '*.jar')
}
}
project(":android") {
apply plugin: "android"
configurations { natives }
dependencies {
compile project(":core")
compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"
compile "com.google.android.gms:play-services-ads:8.3.0"
compile fileTree(dir: 'libs', include: '*.so')
}
}
project(":ios") {
apply plugin: "java"
apply plugin: "robovm"
dependencies {
compile project(":core")
compile "com.mobidevelop.robovm:robovm-rt:$roboVMVersion"
compile "com.mobidevelop.robovm:robovm-cocoatouch:$roboVMVersion"
compile "com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"
compile "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-ios"
}
}
project(":html") {
apply plugin: "gwt"
apply plugin: "war"
dependencies {
compile project(":core")
compile "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion"
compile "com.badlogicgames.gdx:gdx:$gdxVersion:sources"
compile "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources"
}
}
project(":core") {
apply plugin: "java"
dependencies {
compile "com.badlogicgames.gdx:gdx:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
compile fileTree(dir: 'libs', include: '*.jar')
}
}
tasks.eclipse.doLast {
delete ".project"
}
UPDATE:
我发现这个解决方案link所以我所做的是我复制GDX-liquidfun.jar到Android - >库然后右键单击并添加为库,但我仍然得到错误。请帮助,在此先感谢(我用的IntelliJ社区版)
在Android的依赖将这个:
natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86"
而这核心的依赖关系:
compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
我试了一下,但现在我在//world.step(1/60f,6,2,1)上得到一个错误;在常规box2d中,你不需要1,但因为我也使用了liquidfun,所以我需要第四个参数。如果我只是做world.step(1/60f,6,2),错误被删除,但一旦加载游戏崩溃,告诉我所需的是(float,int,int,int) –
如果你想使用liquidfun那么在你的项目中不包括box2d。 liquidfun取决于与box2d jar不同的jar。 box2d世界的一步方法带三个参数但是有四个参数的世界的liquidfun相关jar。 – Aryan
可能是一个问题你是gradle,请将它们添加到你的问题中。 – Marius
下面的答案有什么问题?你说这些类可以解决,但有些方法不起作用,所以看起来你需要阅读API文档来找到正确的参数 –
@ cricket_007 - 我使用LiquidFun作为粒子,LiquidFun基于Box2d所以当你使用LiquidFun ,world.step将需要4个参数。但是如果我使用普通的Box2d,那么只需要3个参数,下面的答案基本上只会使用box2d,但我需要LiquidFun来处理粒子。 –