问题
If I start it for Desktop it runs pretty nice, but after the export for my Android it crashes right after I start the application.
So my question...:
What's wrong that it works for the Desktop but not for my Android?
public class Player implements Serializable{
/**
*
*/
private static final long serialVersionUID = -7913517465400462738L;
Vector2 position;
private static final int col = 4;
private static final int row = 4;
private Animation animation;
private Texture playerTexture;
private TextureRegion[] frames;
private TextureRegion currentFrame;
private float stateTime;
private int x,y, deltaX, deltaY;
public Player(Vector2 position){
this.position = position;
playerTexture = new Texture(Gdx.files.internal("Charackter/charackter_sprite.png"));
TextureRegion[][] temp = TextureRegion.split(playerTexture, playerTexture.getWidth() / col, playerTexture.getHeight() / row);
frames = new TextureRegion[col* row];
int index = 0;
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
frames[index++] = temp[i][j];
}
}
animation = new Animation(1, frames);
stateTime = 0;
currentFrame = animation.getKeyFrame(0);
deltaX = Gdx.graphics.getWidth();
deltaY = Gdx.graphics.getHeight();
}
public void update(){
if(stateTime < 4){
stateTime += Gdx.graphics.getDeltaTime();
}
else{
stateTime = 0;
}
if (Gdx.input.isTouched())
{
x = Gdx.input.getX();
y = Gdx.input.getY();
if(x < deltaX * 50 / 100 && y > deltaY * 35 / 100 && y < deltaY * 65 / 100){
position.x -= 1;
currentFrame = animation.getKeyFrame(4 + stateTime);
}
if(x > deltaX * 50 / 100 && y > deltaY * 35 / 100 && y < deltaY * 65 / 100){
position.x += 1;
currentFrame = animation.getKeyFrame(8 + stateTime);
}
if(y < deltaY * 35 / 100 ){
position.y += 1;
currentFrame = animation.getKeyFrame(12 + stateTime);
}
if(y > deltaY * 65 / 100 ){
position.y -= 1;
currentFrame = animation.getKeyFrame(0 + stateTime);
}
}
}
public Vector2 getPosition() {
return position;
}
public void setPosition(Vector2 position) {
this.position = position;
}
public TextureRegion getCurrentFrame() {
return currentFrame;
}
}
.
public class PlayScreen implements Screen {
private SpriteBatch batch;
private Vector2 position;
private Game game;
private Player player;
private Texture bild;
public PlayScreen(Game game){
this.game = game;
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
player.update();
batch.begin();
batch.draw(player.getCurrentFrame(), player.getPosition().x, player.getPosition().y);
batch.end();
}
@Override
public void resize(int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void show() {
batch = new SpriteBatch();
position = new Vector2(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2);
player = new Player(position);
bild = new Texture("spongebob.png");
}
@Override
public void hide() {
// TODO Auto-generated method stub
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
batch.dispose();
}
}
Logcat
11-25 11:25:20.990: D/dalvikvm(862): Trying to load lib /data/app-lib/com.mygdx.game.android-2/libgdx.so 0xb1caad50
11-25 11:25:21.040: D/dalvikvm(862): Added shared lib /data/app-lib/com.mygdx.game.android-2/libgdx.so 0xb1caad50
11-25 11:25:21.040: D/dalvikvm(862): No JNI_OnLoad found in /data/app-lib/com.mygdx.game.android-2/libgdx.so 0xb1caad50, skipping init
11-25 11:25:21.100: D/AndroidRuntime(862): Shutting down VM
11-25 11:25:21.100: W/dalvikvm(862): threadid=1: thread exiting with uncaught exception (group=0xb1a73d70)
11-25 11:25:21.110: E/AndroidRuntime(862): FATAL EXCEPTION: main
11-25 11:25:21.110: E/AndroidRuntime(862): Process: com.mygdx.game.android, PID: 862
11-25 11:25:21.110: E/AndroidRuntime(862): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mygdx.game.android/com.mygdx.game.android.AndroidLauncher}: com.badlogic.gdx.utils.GdxRuntimeException: Libgdx requires OpenGL ES 2.0
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2197)
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2258)
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.ActivityThread.access$800(ActivityThread.java:138)
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1209)
11-25 11:25:21.110: E/AndroidRuntime(862): at android.os.Handler.dispatchMessage(Handler.java:102)
11-25 11:25:21.110: E/AndroidRuntime(862): at android.os.Looper.loop(Looper.java:136)
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.ActivityThread.main(ActivityThread.java:5026)
11-25 11:25:21.110: E/AndroidRuntime(862): at java.lang.reflect.Method.invokeNative(Native Method)
11-25 11:25:21.110: E/AndroidRuntime(862): at java.lang.reflect.Method.invoke(Method.java:515)
11-25 11:25:21.110: E/AndroidRuntime(862): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
11-25 11:25:21.110: E/AndroidRuntime(862): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
11-25 11:25:21.110: E/AndroidRuntime(862): at dalvik.system.NativeStart.main(Native Method)
11-25 11:25:21.110: E/AndroidRuntime(862): Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Libgdx requires OpenGL ES 2.0
11-25 11:25:21.110: E/AndroidRuntime(862): at com.badlogic.gdx.backends.android.AndroidGraphics.createGLSurfaceView(AndroidGraphics.java:122)
11-25 11:25:21.110: E/AndroidRuntime(862): at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(AndroidGraphics.java:102)
11-25 11:25:21.110: E/AndroidRuntime(862): at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(AndroidGraphics.java:95)
11-25 11:25:21.110: E/AndroidRuntime(862): at com.badlogic.gdx.backends.android.AndroidApplication.init(AndroidApplication.java:133)
11-25 11:25:21.110: E/AndroidRuntime(862): at com.badlogic.gdx.backends.android.AndroidApplication.initialize(AndroidApplication.java:99)
11-25 11:25:21.110: E/AndroidRuntime(862): at com.mygdx.game.android.AndroidLauncher.onCreate(AndroidLauncher.java:14)
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.Activity.performCreate(Activity.java:5242)
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2161)
11-25 11:25:21.110: E/AndroidRuntime(862): ... 11 more
I'm pretty new in Java so I hope it's the right part :x
回答1:
There has been some persons with exceptions where the logcat says:
GdxRuntimeException: Libgdx requires OpenGL ES 2.0
This is due to your emulator not using your gpu for graphics and the best solution would be to use your phone to test your application but if for any reason you can't you can as @AngelAngel apply this solution: libgdx android failed on launch.
For some reason ( probably the opengl not glitching ) the solution to the following error might also help you
com.badlogic.gdx.utils.GdxRuntimeException: Error reading file: xxx.xxx
If you have this error only while experimenting in Android while it works on Windows it probably is because one of your assets doesn't exactly match the name you used on your code. Unix is case-sensative so image.jpg is different from Image.jpg . So check every asset you have to see if the names match!
回答2:
you use emulator?
libgdx android failed on launch
EDIT:
Opetion
I tell you what, because I found a similar question, I put down the logcat that question, and send this response, and the user is solved by changing the file,. TTF by. ttf and spent some time looking for the error, why was saying what I find confusing the log, however I have no windows, but the most striking difference I see between the two is that this line log
11-28 21:10:37.617: D/libEGL(613): Emulator without GPU support detected. Fallback to software renderer.
that the log of this question is not listed. perhaps when the error is emulation or lack of OpenGL is more like the logcat or the first and when the file not found by the difference between uppercase and lowercase log you is more like the second, which says Emulator detected without GPU support. I hope I completely understand my English is not good
logcat this question; FATAL EXCEPTION : main - My app doesn't work on android devices anymore, but works on desktop
11-28 21:10:37.517: D/dalvikvm(613): Trying to load lib /data/data/com.premier.jeu.android/lib/libgdx.so 0x411998b0
11-28 21:10:37.527: D/dalvikvm(613): Added shared lib /data/data/com.premier.jeu.android/lib/libgdx.so 0x411998b0
11-28 21:10:37.527: D/dalvikvm(613): No JNI_OnLoad found in /data/data/com.premier.jeu.android/lib/libgdx.so 0x411998b0, skipping init
11-28 21:10:37.617: D/libEGL(613): Emulator without GPU support detected. Fallback to software renderer.
11-28 21:10:37.627: D/libEGL(613): loaded /system/lib/egl/libGLES_android.so
11-28 21:10:37.646: D/AndroidRuntime(613): Shutting down VM
11-28 21:10:37.646: W/dalvikvm(613): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
11-28 21:10:37.656: E/AndroidRuntime(613): FATAL EXCEPTION: main
11-28 21:10:37.656: E/AndroidRuntime(613): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.premier.jeu.android/com.premier.jeu.android.AndroidLauncher}: com.badlogic.gdx.utils.GdxRuntimeException: Libgdx requires OpenGL ES 2.0
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.ActivityThread.access$600(ActivityThread.java:130)
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
11-28 21:10:37.656: E/AndroidRuntime(613): at android.os.Handler.dispatchMessage(Handler.java:99)
11-28 21:10:37.656: E/AndroidRuntime(613): at android.os.Looper.loop(Looper.java:137)
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.ActivityThread.main(ActivityThread.java:4745)
11-28 21:10:37.656: E/AndroidRuntime(613): at java.lang.reflect.Method.invokeNative(Native Method)
11-28 21:10:37.656: E/AndroidRuntime(613): at java.lang.reflect.Method.invoke(Method.java:511)
11-28 21:10:37.656: E/AndroidRuntime(613): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-28 21:10:37.656: E/AndroidRuntime(613): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-28 21:10:37.656: E/AndroidRuntime(613): at dalvik.system.NativeStart.main(Native Method)
11-28 21:10:37.656: E/AndroidRuntime(613): Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Libgdx requires OpenGL ES 2.0
11-28 21:10:37.656: E/AndroidRuntime(613): at com.badlogic.gdx.backends.android.AndroidGraphics.createGLSurfaceView(AndroidGraphics.java:122)
11-28 21:10:37.656: E/AndroidRuntime(613): at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(AndroidGraphics.java:102)
11-28 21:10:37.656: E/AndroidRuntime(613): at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(AndroidGraphics.java:95)
11-28 21:10:37.656: E/AndroidRuntime(613): at com.badlogic.gdx.backends.android.AndroidApplication.init(AndroidApplication.java:133)
11-28 21:10:37.656: E/AndroidRuntime(613): at com.badlogic.gdx.backends.android.AndroidApplication.initialize(AndroidApplication.java:99)
11-28 21:10:37.656: E/AndroidRuntime(613): at com.premier.jeu.android.AndroidLauncher.onCreate(AndroidLauncher.java:16)
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.Activity.performCreate(Activity.java:5008)
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
11-28 21:10:37.656: E/AndroidRuntime(613): ... 11 more
11-28 21:10:39.476: I/Process(613): Sending signal. PID: 613 SIG: 9
来源:https://stackoverflow.com/questions/27116075/libgdx-animation-for-android