2013-08-03 41 views
1

在爲libGDX android庫完成this tutorial後,桌面項目運行良好,並且在eclipse指出的任何地方都沒有錯誤。當我在我的Nexus 7上運行它(運行Android 4.3)時,白色屏幕會閃爍(大概是應用程序的默認背景),然後返回到主屏幕,並說「不幸的是my-first-triangle-android有停止「。LibGDX'MyFirstTriangle'示例在啓動時崩潰

這是我從logcat中出現錯誤:

08-02 20:11:52.940: E/AndroidRuntime(4095): FATAL EXCEPTION: main 
08-02 20:11:52.940: E/AndroidRuntime(4095): java.lang.NoClassDefFoundError: com.test.myfirsttriangle.MyFirstTriangle 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at com.example.my_first_triangle_android.MainActivity.onCreate(MainActivity.java:12) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at android.app.Activity.performCreate(Activity.java:5133) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at android.os.Looper.loop(Looper.java:137) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at java.lang.reflect.Method.invoke(Method.java:525) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at dalvik.system.NativeStart.main(Native Method) 

項目:我先三角

MyFirstTriangle.java:

package com.test.myfirsttriangle; 

import com.badlogic.gdx.ApplicationListener; 
import com.badlogic.gdx.graphics.GL10; 
import com.badlogic.gdx.graphics.Mesh; 
import com.badlogic.gdx.graphics.VertexAttribute; 
import com.badlogic.gdx.graphics.VertexAttributes.Usage; 

public class MyFirstTriangle implements ApplicationListener { 
    private Mesh mesh; 

    @Override 
    public void create() { 
     if (mesh == null) { 
      mesh = new Mesh(true, 3, 3, 
        new VertexAttribute(Usage.Position, 3, "a_position"));  

      mesh.setVertices(new float[] { -0.5f, -0.5f, 0, 
              0.5f, -0.5f, 0, 
              0, 0.5f, 0 }); 
      mesh.setIndices(new short[] { 0, 1, 2 });   
     } 
    } 

    @Override 
    public void dispose() { } 

    @Override 
    public void pause() { } 

    @Override 
    public void render() { 
     mesh.render(GL10.GL_TRIANGLES, 0, 3); 
    } 

    @Override 
    public void resize(int width, int height) { } 

    @Override 
    public void resume() { } 
} 

MyFirstTriangleDesktop.java

package com.test.myfirsttriangle; 

import com.badlogic.gdx.backends.jogl.JoglApplication; 

public class MyFirstTriangleDesktop { 
    public static void main (String[] argv) { 
     new JoglApplication(new MyFirstTriangle(), "My First Triangle", 480, 320, false);  
    } 
} 

項目:我先三角的Android

MainActivity.java:

package com.example.my_first_triangle_android; 

import android.os.Bundle; 

import com.badlogic.gdx.backends.android.AndroidApplication; 
import com.test.myfirsttriangle.MyFirstTriangle; 

public class MainActivity extends AndroidApplication { 
    @Override 
     public void onCreate (Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       initialize(new MyFirstTriangle(), false);    
     } 
} 

額外的信息: 我正在這次日食: http://developer.android.com/sdk/installing/bundle.html

編輯

好像從日誌中的錯誤貓

08-02 20:11:52.940: E/AndroidRuntime(4095): FATAL EXCEPTION: main 
08-02 20:11:52.940: E/AndroidRuntime(4095): java.lang.NoClassDefFoundError: com.test.myfirsttriangle.MyFirstTriangle 
08-02 20:11:52.940: E/AndroidRuntime(4095):  at com.example.my_first_triangle_android.MainActivity.onCreate(MainActivity.java:12) 

對此行有問題:

initialize(new MyFirstTriangle(), false);    
+0

它是否在AVD模擬器中工作? – LostBoy

+0

模擬器沒有爲我加載。它只是坐在Android加載屏幕上。 – Chris

回答

2

在多個項目中構建Android應用程序比應該更加繁瑣。基本上,當ADT構建你的Android包時,它忘記了在構建中包含你的Libgdx「核心」包(my-first-triangle)。

在Package Explorer中右鍵單擊您的Android項目,點擊Properties,選擇Java Build Path。問題很可能在Order and Export選項卡上。確保您的my-first-triangle項目已標記爲導出(應該有一個複選標記集)。

這不是一個Libgdx問題。它僅僅是Libgdx將應用程序分成多個包,因此比一般的Android用戶更頻繁地被絆倒。

+0

非常感謝你!那工作。現在我可以證明我生命中最後的5個小時 – Chris

2

檢查以確保您的構建路徑是正確的。在Android的最新版本中,您需要明確導出私有庫。

編輯︰ 更有可能你需要去你的屬性=> Java Build Path =>訂單和導出(選項卡),然後選中Android專用庫的框,以確保所有的libGDX類與鏈接你的項目。

+0

查看我的編輯,看看你是否認爲問題仍然是一樣的?謝謝 – Chris

+0

@ user2341336編輯,誠實地根據訂單和出口,你可以嘗試檢查所有未經檢查的框... – Tonithy

+0

也謝謝你,但P.T.解釋得更好,我看到了他的第一個。謝謝你的努力,雖然,我會upvote,但我需要15代表。 – Chris