当我运行我的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)
答案 0 :(得分:9)
幸运的是,它很容易修复 - 在你的源根目录(目录 在哪里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(或 它试图加载库。如果库不存在它 无法解决这个问题,必须崩溃。