2012-10-16 13 views
6

sto ottenendo errore come questo sul mio telefono quando ho eseguito il mio programma AndEngine viene eseguito con successo sul mio frnds telefono, ma quando ho provato a correre sto ottenendo errore come dispositivo intrinsecamente incompatibile rilevato ...AndEngineRuntimeException: rilevato dispositivo intrinsecamente incompatibile.

mia logcat è al di sotto

10-16 14:13:23.061: E/AndroidRuntime(4533): FATAL EXCEPTION: GLThread 10 
    10-16 14:13:23.061: E/AndroidRuntime(4533): java.lang.ExceptionInInitializerError 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.vbo.attribute.VertexBufferObjectAttributeFix.glVertexAttribPointer(VertexBufferObjectAttributeFix.java:39) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.vbo.attribute.VertexBufferObjectAttributes.glVertexAttribPointers(VertexBufferObjectAttributes.java:50) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.shader.ShaderProgram.bind(ShaderProgram.java:126) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.shader.PositionTextureCoordinatesShaderProgram.bind(PositionTextureCoordinatesShaderProgram.java:86) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.vbo.VertexBufferObject.bind(VertexBufferObject.java:162) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.texture.TextureWarmUpVertexBufferObject.warmup(TextureWarmUpVertexBufferObject.java:97) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.texture.TextureManager.updateTextures(TextureManager.java:257) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.engine.Engine.onDrawFrame(Engine.java:613) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.view.EngineRenderer.onDrawFrame(EngineRenderer.java:105) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1332) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116) 
    10-16 14:13:23.061: E/AndroidRuntime(4533): Caused by: org.andengine.util.exception.AndEngineRuntimeException: Inherently incompatible device detected. 
    10-16 14:13:23.061: E/AndroidRuntime(4533): at org.andengine.opengl.GLES20Fix.<clinit>(GLES20Fix.java:39) 

risposta

9

Come è stated here by 42labs:

Fortunatamente è molto facile da risolvere - in radice le fonti (la directory in cui AndroidManifest.xml è) fare una directory di nome libs all'interno della quale crea una directory denominata armeabi. Ora ottieni AndEnginesources (da un ramo OpenGL ES 2.0) - from here. È possibile clonare il repository o scaricarlo. Non importa

L'importante è copiare la libandengine.so disponibile in libs/armeabi nella libreria/armeabi appena creata nella directory . Risolverà il problema :)

Probabilmente questa non è la soluzione ufficiale, forse non abbiamo visto una nota da qualche parte sul forum di AndEngine, ma questo metodo risolve il problema in 30 secondi e non produce alcun altro problemi.

E - Perché è in crash? Cosa risolve?

E 'abbastanza divertente in realtà. Gli sviluppatori di Google, durante la preparazione dell'SDK Java Froyo , hanno dimenticato di implementare le versioni Java di alcune delle (standard!) OpenGL ES 2.0. La soluzione a questo problema è utilizzare JNI su creare un bridge di chiamata su una funzione nativa mancante nell'SDK. AndEngine ha questo bridge nel citato libandengine.so. Quando viene avviato il motore , controlla la versione del sistema operativo. Se è Froyo (o inferiore) tenta di caricare la libreria. Se la libreria non è presente, lo non ha modo di risolverlo e deve bloccarsi.

Problemi correlati