AndEngineRuntimeException:检测到固有的不兼容设备。

时间:2012-10-16 08:55:44

标签: android andengine

当我运行我的AndEngine程序时,我在手机上收到这样的错误 它在我的frnds手机上成功运行,但当我试图运行时,我收到错误,如检测到固有的不兼容设备...

我的logcat在

之下
   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)

1 个答案:

答案 0 :(得分:9)

原样stated here by 42labs

  

幸运的是,它很容易修复 - 在你的源根目录(目录   在哪里AndroidManifest.xml)创建一个名为libs的目录   然后创建一个名为armeabi的目录。现在获取AndEnginesources(来自   OpenGL ES 2.0分支) - from here。您可以克隆存储库   或者下载它。无所谓。

     

重要的是你应该将libs / armeabi中的libandengine.so复制到你刚刚创建的libs / armeabi中   你的目录。将解决问题:)

     

可能这不是官方的解决方案,也许我们还没有见过   请注意AndEngine论坛上的某个地方,但这种方法修复了   在30秒内出现问题并且不会产生任何其他问题。

     

并且 - 为什么会崩溃?它有什么作用?

     

实际上这很有趣。谷歌开发人员在准备Froyo时   Java SDK,忘了实现一些Java版本(标准!)   OpenGL ES 2.0功能。这个问题的解决方案是使用JNI   创建一个到SDK中缺少的本机函数的调用桥。   AndEngine在提到的libandengine.so中有这座桥。当。。。的时候   引擎启动它检查OS版本。如果是Froyo(或   它试图加载库。如果库不存在它   无法解决这个问题,必须崩溃。