AndEngine不适用于摩托罗拉Defy
我现在正在测试一个我正在使用的应用程序,在各种设备上,不幸的是,我遇到的一个问题是,由于某种原因,我尝试在Android 2.2.2上使用Motorola Defy设备运行的任何AndEngine活动都不起作用并崩溃的应用程序。
在其他设备上,我测试了这些AndEngine活动,如三星Galaxy S2和三星Galaxy Mini,一切都完美无缺。
(我正在使用AndEngine和GLES2)
我收到的错误是这样的
06-02 13:46:12.749: E/AndroidRuntime(3318): FATAL EXCEPTION: GLThread 21
06-02 13:46:12.749: E/AndroidRuntime(3318): java.lang.ExceptionInInitializerError
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.opengl.vbo.attribute.VertexBufferObjectAttributeFix.glVertexAttribPointer(VertexBufferObjectAttributeFix.java:39)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.opengl.vbo.attribute.VertexBufferObjectAttributes.glVertexAttribPointers(VertexBufferObjectAttributes.java:50)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.opengl.shader.ShaderProgram.bind(ShaderProgram.java:126)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.opengl.shader.PositionColorTextureCoordinatesShaderProgram.bind(PositionColorTextureCoordinatesShaderProgram.java:89)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.opengl.vbo.VertexBufferObject.bind(VertexBufferObject.java:160)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.entity.sprite.Sprite.preDraw(Sprite.java:170)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.entity.Entity.onManagedDraw(Entity.java:1266)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.entity.Entity.onDraw(Entity.java:1072)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.entity.Entity.onManagedDraw(Entity.java:1295)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.entity.scene.Scene.onManagedDraw(Scene.java:261)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.entity.Entity.onDraw(Entity.java:1072)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.engine.Engine.onDrawScene(Engine.java:623)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.engine.Engine.onDrawFrame(Engine.java:613)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.opengl.view.EngineRenderer.onDrawFrame(EngineRenderer.java:104)
06-02 13:46:12.749: E/AndroidRuntime(3318): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1332)
06-02 13:46:12.749: E/AndroidRuntime(3318): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)
06-02 13:46:12.749: E/AndroidRuntime(3318): Caused by: org.andengine.util.exception.AndEngineRuntimeException: java.lang.UnsatisfiedLinkError: Library andengine not found
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.opengl.GLES20Fix.<clinit>(GLES20Fix.java:22)
06-02 13:46:12.749: E/AndroidRuntime(3318): ... 16 more
06-02 13:46:12.749: E/AndroidRuntime(3318): Caused by: java.lang.UnsatisfiedLinkError: Library andengine not found
06-02 13:46:12.749: E/AndroidRuntime(3318): at java.lang.Runtime.loadLibrary(Runtime.java:461)
06-02 13:46:12.749: E/AndroidRuntime(3318): at java.lang.System.loadLibrary(System.java:557)
06-02 13:46:12.749: E/AndroidRuntime(3318): at org.andengine.opengl.GLES20Fix.<clinit>(GLES20Fix.java:20)
06-02 13:46:12.749: E/AndroidRuntime(3318): ... 16 more
对我来说,出于某种原因,运行AndEngine的基础架构存在真正的问题,而不像我的代码那样。
即使是最简单的引擎活动,只有一个简单的精灵崩溃。
我希望有一个合理的解决方案来解决这个问题。
谢谢!
编辑:
由于Nicolas建议我调试AndEngine.isDeviceSupported方法,并且在此行上抛出异常
的System.loadLibrary( “andengine”);
在这个方法中
private static void checkCodePathSupport() throws DeviceNotSupportedException {
if(SystemUtils.isAndroidVersionOrLower(Build.VERSION_CODES.FROYO)) {
try {
System.loadLibrary("andengine");
} catch (final UnsatisfiedLinkError e) {
throw new DeviceNotSupportedException(DeviceNotSupportedCause.CODEPATH_INCOMPLETE, e);
}
}
}
UnsatisfiedLinkError:Library andengine找不到。
我希望这有帮助..
如下所示:https://github.com/nicolasgramlich/AndEngineExamples/blob/GLES2/src/org/andengine/examples/launcher/ExampleLauncher.java#L61
呼叫:
if(!AndEngine.isDeviceSupported()) {
// Oh no
}
如果该方法在您的代码中不存在,请更新到最新的GLES2修订版。
向其报告失败的地方。
谢谢。 =)
我必须在姜饼版的新款摩托罗拉Defy Plus上进行测试,并且工作正常。 所以无论是旧的Android版本都不支持(2.2),或者老式的普通Motorola Defy的硬件不被支持。
链接地址: http://www.djcxy.com/p/36745.html