0

現在、作業中のアプリをさまざまなデバイスでテストしていますが、残念ながら、Android 2.2.2 を搭載した Motorola Defy デバイスで実行しようとした AndEngine アクティビティが何らかの理由で機能しないという問題が発生しています。そしてアプリをクラッシュさせます。

Samsung Galaxy S2 や Samsung Galaxy Mini などの AndEngine アクティビティをテストした他のデバイスでは、すべて問題なく動作しました。

(GLES2でAndEngineを使用しています)

私が受け取っているエラーはこれです

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 not found です。

これが役立つことを願っています..

4

2 に答える 2

1

ここに見られるように: https://github.com/nicolasgramlich/AndEngineExamples/blob/GLES2/src/org/andengine/examples/launcher/ExampleLauncher.java#L61

電話:

if(!AndEngine.isDeviceSupported()) {
    // Oh no
}

そのメソッドがまだコードに存在しない場合は、最新の GLES2 リビジョンに更新してください。

正確に失敗した場所を報告してください。

ありがとう。=)

于 2012-06-06T21:44:10.007 に答える
0

新しい Motorola Defy Plusのジンジャーブレッド バージョンでテストしたところ、うまくいきました。そのため、古い Android バージョン (2.2) がサポートされていなかったか、古い通常の Motorola Defy のハードウェアがサポートされていませんでした。

于 2012-10-11T08:41:40.547 に答える