2013-08-03 42 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