Klepton: Running Android VR APKs on Apple Vision Pro Without JIT
A new compatibility layer translates Android ARM64 VR apps into native Apple binaries, letting Beat Saber run on Vision Pro and macOS — no JIT required.

Klepton is a new open-source project that aims to run Android ARM64 VR applications on Apple Vision Pro and macOS. It does this by translating Android .so libraries into loadable Apple .dylib and .framework libraries, which then link into the Klepton runtime. The project currently focuses on Java-thin applications only — no ART, no JVM.
For graphics, GLES 3.2 is translated to a vendored ANGLE GLES 3.0 (with its Metal backend), and Vulkan is translated to MoltenVK. The runtime provides reimplementations of Android system libraries (bionic, NDK, JNI) and Oculus VR Platform (ovrp) functions, all backed by Apple frameworks like ARKit, GameController, and AVAudioEngine.
One of the trickiest parts is handling the x18 register. Both Android and macOS reserve x18, but many older Android apps still use it, and macOS zeros it on context switches. Klepton patches all x18 usage so that per-library TLS slots are used instead.
Klepton can also load and patch .so files at runtime with mmap, but this is only really useful on macOS where JIT is allowed. Some applications will require JIT if they use scripting runtimes like LuaJIT or V8.
Currently, Beat Saber is working on macOS and visionOS with minor graphical issues. Steam VR Link and improving generalizability/build tooling are still WIP.
Running Android ARM64 VR APKs on Apple Vision Pro, no JIT required!
Source: GitHub
Discussion
0 Comments
Be the first to start the discussion.