Ich befolgte die Anweisungen in android-test Repo von LWJGL, um den Android-Port von LWJGL zu bauen. Ich benutze mein Telefon, um es jetzt für eine Weile zu entwickeln, also entschied ich mich, mein Tablet anzuprobieren. Das hat zwei Probleme dargestellt. Zuerst schlägt die Installation mit INSTALL_FAILED_NO_MATCHING_ABIS
fehl. Nachdem ich es mit einem Block von einer anderen Stack Overflow Antwort gezwungen habe, bekomme ich es zu installieren. Es installiert, aber stürzt mit einem UnsatisfiedLinkError:LWJGL stürzt auf Geräten mit ARM-CPUs
Process: com.example.mygame, PID: 31920
java.lang.UnsatisfiedLinkError: Failed to locate library: liblwjgl.so
at org.lwjgl.system.Library.loadSystem(Library.java:145)
at org.lwjgl.system.Library.loadSystem(Library.java:65)
at org.lwjgl.system.Library.<clinit>(Library.java:48)
at org.lwjgl.system.Library.loadSystem(Library.java:87)
at org.lwjgl.opengles.GLES.<clinit>(GLES.java:60)
at com.example.mygame.engine.SRenderer.onSurfaceCreated(SRenderer.java:33)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1521)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1253)
das heißt es nicht die LWJGL Bibliothek finden. Der komische Teil ist, dass es nur auf meinem Tablet (nicht meinem Handy) abstürzt und der einzige Unterschied, den ich finden kann, ist die Prozessoren (Intel VS Arm).
Der Absturz tritt auf dieser Linie:
GLES.createCapabilities();
und es geschieht nur auf ARM-Geräte. Ich habe auch verschiedene Geräte (meistens Emulatoren) ausprobiert und kann dies nur auf ARM-Geräten reproduzieren, egal ob 32 oder 64 Bit.
Reproduzieren des Problems ist einfach: Richten Sie einen grundlegenden Renderer und GLSurfaceView und rufen Sie GLES.createCapabilities();
im Renderer in onSurfaceCreated
und auf einem Gerät mit einer ARM-CPU ausführen.
Auch die Klonierung des android-test
Repo- und es auf einem ARM-Gerät ausgeführt war genug, um es zu reproduzieren für mich
Wie kann ich LWJGL bekommen wie auf ARM-Geräten erwartet zu laufen?