安卓游戏引擎运行时异常:检测到不兼容设备。

6
当我运行我的AndEngine程序时,我在手机上遇到了这样的错误。它可以在我的朋友的手机上成功运行,但是当我尝试运行它时,会出现"Inherently incompatible device detected..."的错误。
以下是我的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个回答

9

42labs所述:

幸运的是,这很容易解决 - 在你的源代码根目录(即AndroidManifest.xml所在的目录)中创建一个名为libs的目录,然后在其中创建一个名为armeabi的目录。现在从OpenGL ES 2.0分支获取AndEngine源代码 - 从这里。您可以克隆存储库或下载它。无所谓。

重要的是,您应该将该处可用的libandengine.so复制到您刚创建的libs / armeabi中。这将解决问题 :)

可能这不是官方解决方案,也许我们没有在AndEngine的论坛上看到任何说明,但是此方法可以在30秒内解决问题,并且不会引起任何其他问题。

而且 - 它崩溃了吗?它修正了什么?

实际上很有趣。当Google开发人员准备Froyo Java SDK时,忘记实现一些(标准!)OpenGL ES 2.0函数的Java版本。解决此问题的方法是使用JNI创建调用缺少SDK中的本地函数的调用桥。AndEngine在所提到的libandengine.so中具有此桥梁。启动引擎时,它会检查操作系统的版本。如果是Froyo(或更低版本),则尝试加载库。如果库不存在,则无法解决此问题并且必须崩溃。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接