2017-12-20 7 views
1

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?

Antwort

0

Es stellte sich heraus, dass die Ausnahme bestand, weil die Dateien nicht an erster Stelle enthalten waren. Der Android-Port ist nicht noch fertig, so dass es keine vorkompilierten Bibliotheken über Maven zentralen oder allgemeinen Download von der Website oder Github gibt.

Am Ende musste ich die arm64-v8a und armeabi-v7a separat kompilieren (2 verschiedene aar-Dateien) und jede der Bibliotheken als separates Modul in meinem Projekt hinzufügen. Die x86- und x86_64-Bibliotheken müssen auch separat von diesen beiden Bibliotheken kompiliert werden.

Grundsätzlich kompilieren Sie jede der Kernarchitekturen separat und fügen Sie sie dem Projekt

Verwandte Themen