2016-09-29 105 views
13

我使用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社區版)

+0

可能是一個問題你是gradle,請將它們添加到你的問題中。 – Marius

+0

下面的答案有什麼問題?你說這些類可以解決,但有些方法不起作用,所以看起來你需要閱讀API文檔來找到正確的參數 –

+0

@ cricket_007 - 我使用LiquidFun作爲粒子,LiquidFun基於Box2d所以當你使用LiquidFun ,world.step將需要4個參數。但是如果我使用普通的Box2d,那麼只需要3個參數,下面的答案基本上只會使用box2d,但我需要LiquidFun來處理粒子。 –

回答

0

在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" 
+0

我試了一下,但現在我在//world.step(1/60f,6,2,1)上得到一個錯誤;在常規box2d中,你不需要1,但因爲我也使用了liquidfun,所以我需要第四個參數。如果我只是做world.step(1/60f,6,2),錯誤被刪除,但一旦加載遊戲崩潰,告訴我所需的是(float,int,int,int) –

+0

如果你想使用liquidfun那麼在你的項目中不包括box2d。 liquidfun取決於與box2d jar不同的jar。 box2d世界的一步方法帶三個參數但是有四個參數的世界的liquidfun相關jar。 – Aryan