{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreihb7ojdig46a4barkutylpigsx5eo2w5wv34ag572mysybehh6m7q",
"uri": "at://did:plc:dxjzgxe7cvirxkwfjr2tjspt/app.bsky.feed.post/3mnbne633shk2"
},
"path": "/t/jme-3-10-0-alpha5/49602#post_16",
"publishedAt": "2026-06-02T01:49:45.000Z",
"site": "https://hub.jmonkeyengine.org",
"tags": [
"Releases · NostrGameEngine/ios-graal-jdk-21 · GitHub"
],
"textContent": "Hi there!\n\nI’ve just tried to build the game using the tips you gave me. It looked promising but I’ve found plenty of issues. I’m commenting them here but I think we should create a new thread for iOS\n\nFirst of all, I noticed the whole graalvm thing is for arm64 only like the binary downloaded from liberica-nik (file build/libjglios/third_party/graalvm-host/liberica-nik-23.1.3-macos-aarch64/lib/svm/bin/native-image: Mach-O 64-bit arm64 executable, flags:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE> ) and the releases at Releases · NostrGameEngine/ios-graal-jdk-21 · GitHub are only arm64 also so as I don’t own a arm based mac but an intel hackintosh I ended up running the build from github actions (buildIosSimulatorApp target). So it would be great if possible to add also x86_64 arch\n\nAbout the build itself, I’m getting lots of linker errors:\n\n\n ld: Undefined symbols:\n _eglCreateContext, referenced from:\n create_context(int) in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n > Task :ios-graalvm:buildIosSimulatorApp FAILED\n _eglCreateWindowSurface, referenced from:\n _libjglios_egl_init_with_metal_layer in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _eglDestroyContext, referenced from:\n _libjglios_egl_shutdown in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _eglDestroySurface, referenced from:\n _libjglios_egl_shutdown in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _eglGetConfigAttrib, referenced from:\n config_attrib(void*, int) in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _eglGetConfigs, referenced from:\n choose_config(int) in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n choose_config(int) in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _eglGetProcAddress, referenced from:\n _libjglios_egl_init_with_metal_layer in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _Java_org_ngengine_libjglios_gles_GLES_glAcquireKeyedMutexWin32EXT in libJGLIOSGLES[2](0-jni_gles.mm.o)\n _Java_org_ngengine_libjglios_gles_GLES_glActiveShaderProgramEXT in libJGLIOSGLES[2](0-jni_gles.mm.o)\n _Java_org_ngengine_libjglios_gles_GLES_glActiveTexture in libJGLIOSGLES[2](0-jni_gles.mm.o)\n _Java_org_ngengine_libjglios_gles_GLES_glAlphaFuncQCOM in libJGLIOSGLES[2](0-jni_gles.mm.o)\n _Java_org_ngengine_libjglios_gles_GLES_glApplyFramebufferAttachmentCMAAINTEL in libJGLIOSGLES[2](0-jni_gles.mm.o)\n _Java_org_ngengine_libjglios_gles_GLES_glAttachShader in libJGLIOSGLES[2](0-jni_gles.mm.o)\n ...\n _eglInitialize, referenced from:\n _libjglios_egl_init_with_metal_layer in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _eglMakeCurrent, referenced from:\n _libjglios_egl_init_with_metal_layer in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _libjglios_egl_make_current in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _libjglios_egl_shutdown in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _eglQuerySurface, referenced from:\n _libjglios_egl_framebuffer_width in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _libjglios_egl_framebuffer_height in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _eglSwapBuffers, referenced from:\n _libjglios_egl_swap_buffers in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _eglTerminate, referenced from:\n _libjglios_egl_shutdown in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _glGetIntegerv, referenced from:\n _libjglios_egl_init_with_metal_layer in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _libjglios_egl_init_with_metal_layer in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _glGetString, referenced from:\n _libjglios_egl_init_with_metal_layer in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _libjglios_egl_init_with_metal_layer in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _libjglios_egl_init_with_metal_layer in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _libjglios_egl_init_with_metal_layer in libJGLIOSCore[3](1-libjglios_ios_launcher.mm.o)\n _Java_org_ngengine_libjglios_gles_GLES_glGetString in libJGLIOSGLES[2](0-jni_gles.mm.o)\n _glGetStringi, referenced from:\n _Java_org_ngengine_libjglios_gles_GLES_glGetStringi in libJGLIOSGLES[2](0-jni_gles.mm.o)\n _glMapBufferRange, referenced from:\n _Java_org_ngengine_libjglios_gles_GLES_glGetBufferSubData in libJGLIOSGLES[2](0-jni_gles.mm.o)\n _glUnmapBuffer, referenced from:\n _Java_org_ngengine_libjglios_gles_GLES_glGetBufferSubData in libJGLIOSGLES[2](0-jni_gles.mm.o)\n clang: error: linker command failed with exit code 1 (use -v to see invocation)\n\n\nApart from the issues I’ve found so far, I have other question, how to add external libraries? For example what if I want to add facebook login or google ads? I also have a custom iOS compilation of libbulletjme for minie in xcframework format, how could I include it to the graalvm library?\n\nThanks",
"title": "jME 3.10.0-alpha5"
}