TL;DR
A new method enables running Android ARM64 VR applications on Apple Vision Pro without JIT. This is achieved through architecture translation with Klepton-ld, opening possibilities for cross-platform VR app compatibility.
Developers have successfully run Android ARM64 VR APKs on the Apple Vision Pro using a tool called Klepton-ld, which translates Android libraries into macOS-compatible formats without requiring JIT. This breakthrough allows Android VR applications to operate on Apple’s mixed reality headset, potentially broadening app compatibility for the platform and developers.
The development involves using Klepton-ld, a translation layer that converts Android .so libraries into loadable Apple .dylib and .framework libraries, which then link into the Klepton runtime. This process does not require Just-In-Time (JIT) compilation, making it compatible with macOS restrictions. Currently, Klepton focuses on Java-thin applications, excluding ART and JVM-based applications.
For graphics, the system translates GLES 3.2 to a vendored ANGLE GLES 3.0 with a Metal backend, and Vulkan to MoltenVK, enabling hardware-accelerated rendering on the Vision Pro. The setup also patches older Android applications that rely on x18 register usage, replacing it with TLS slots, which ensures compatibility across architectures.
While the demonstration shows promising results with applications like Beat Saber, graphical issues remain minor, and the process is still in development. For more on how Apple Vision Pro is expanding VR capabilities, see A.R. Rahman Brings His Immersive Music Experiences To Apple Vision Pro. The project includes scripts for building and running the applications on macOS and Vision Pro, with ongoing work to improve generalizability and tooling, including Steam VR Link support.
Run Android ARM64 VR APKs On Apple Vision Pro
A developing translation method uses Klepton-ld to turn Android-native libraries into Apple-loadable formats—allowing selected VR applications to execute on Vision Pro without Just-In-Time compilation.
How an APK crosses the platform boundary
Klepton-ld bridges incompatible library formats while supporting translation paths for OpenGL ES and Vulkan. The method currently favors “Java-thin” applications whose important workloads already live in native ARM64 code.
Android APK
The application package is prepared and its native ARM64 libraries are identified.
Android .so
ELF shared objects and their dependencies become the translation inputs.
Klepton-ld
The translation layer rewrites libraries for Apple-compatible loading.
.dylib / Framework
Converted libraries link into the Klepton runtime without requiring JIT.
Vision Pro
The application runs through visionOS-compatible execution and graphics paths.
The technical bridge under the headset
No single compatibility layer does all the work. Library conversion, graphics translation, register patching and runtime linkage combine into a native-oriented execution pipeline.
Klepton-ld
Translates Android .so libraries into loadable Apple .dylib and .framework formats.
ANGLE → Metal
GLES 3.2 calls are translated through a vendored ANGLE GLES 3.0 path backed by Apple Metal.
MoltenVK
Vulkan workloads pass through MoltenVK, providing another route to hardware-accelerated rendering.
x18 Register
Older Android code that uses the reserved x18 register can be patched to use thread-local storage slots.
Java-thin Apps
The strongest current fit is software with limited dependence on ART, JVM services or dynamic scripting runtimes.
Complex VR Content
Early demonstrations, including Beat Saber-related testing, suggest substantial native VR workloads can execute.
What works—and where the boundary sits
The breakthrough is meaningful, but it is not universal Android compatibility. Application architecture, graphics APIs and runtime dependencies determine how far each title can travel.
| Capability | Klepton approach | Direct native port | Current outlook |
|---|---|---|---|
| Android ARM64 native code | ✓ Translated | ✓ Recompiled | Core proof of concept demonstrated |
| Just-In-Time compilation | ✓ Avoided | ✓ Usually avoided | Key advantage under Apple restrictions |
| OpenGL ES rendering | ~ Via ANGLE | ~ Requires adaptation | Minor graphical glitches remain |
| Vulkan rendering | ~ Via MoltenVK | ~ Requires adaptation | Hardware acceleration pathway exists |
| ART / JVM-heavy apps | ✗ Excluded today | ~ Major rewrite | One of the largest compatibility gaps |
| Official platform support | ✗ None | ✓ Apple workflow | Independent, experimental development |
Promising architecture, unfinished product
The relative bars below summarize technical maturity described in the demonstration—not benchmark results. Broader compatibility depends on improved tooling, graphical stability and support for richer runtimes.
One chain, five connected layers
The strategic value extends beyond a single demonstration: reusable cross-architecture translation could reduce porting effort and make existing VR libraries accessible across otherwise isolated ecosystems.
Less rewriting, more reuse
Developers could bring selected native-heavy Android VR titles to Apple hardware without rebuilding every component for visionOS, potentially widening the available content library.
Stability before scale
Expected work includes broader application testing, fewer graphical artifacts, better automation, stronger runtime coverage and possible Steam VR Link support.
What this does—and does not—mean
The demonstration establishes technical possibility. It does not yet provide universal compatibility, official support or a consumer-ready installation workflow.
Can it run every Android VR app?
No. Compatibility is strongest for Java-thin, native-heavy applications. ART, JVM and complex scripting dependencies remain significant obstacles.
Does it require JIT?
No. Avoiding JIT is central to the method and helps it fit within Apple’s restrictions on runtime code generation.
Must developers rewrite the APK?
Not as a conventional port. Preparation and library translation are still required, with tools such as apktool supporting the workflow.
Is Apple or Google supporting it?
No. This is an independent experimental project, not an official Apple, Google or visionOS compatibility feature.
Implications for Cross-Platform VR App Compatibility
This development could significantly expand the range of Android VR applications available on Apple Vision Pro, offering developers a way to port existing titles without rewriting code for each platform. It also demonstrates a novel approach to overcoming architecture and JIT restrictions, which could influence future cross-platform VR development. For users, this could mean access to a broader library of VR content on a new hardware ecosystem, potentially boosting the device’s appeal.
However, the process is still experimental, with graphical glitches and incomplete tooling. The ability to run complex scripting runtimes that depend on JIT remains uncertain, which may limit some applications’ functionality. Nonetheless, the demonstration marks a notable step toward more flexible VR app deployment across diverse architectures.
VR headset compatible with Android APKs
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Background on Android VR Compatibility and Apple Vision Pro
Apple Vision Pro, announced in 2023, is a mixed reality headset with a focus on high-end spatial computing. Unlike Android-based VR headsets, it runs on visionOS, which has strict restrictions on runtime code execution, particularly JIT compilation. This limits the ability to run Android applications directly on the device.
Meanwhile, Android VR applications typically rely on ARM64 architecture and often use complex runtime environments like ART or JVM, complicating porting efforts. Prior to this development, running Android VR apps on Apple hardware was largely limited to emulation or partial porting, with significant technical barriers.
The introduction of Klepton-ld and related translation techniques offers a new pathway by translating Android libraries into native macOS formats, bypassing the need for JIT and enabling direct execution. This approach builds on existing efforts to bridge different architectures and runtimes, but its application to VR apps on Vision Pro is a recent and notable advance.
“Klepton-ld translates Android .so libraries into loadable macOS libraries, allowing Android VR APKs to run on Vision Pro without JIT. Graphics are translated via ANGLE and MoltenVK.”
— an anonymous developer on Hacker News

TPU Protective Case Cover for Apple Vision Pro VR Headset, Slim Fit Screen Protector, 360° Protection, Precision Fit, Durable (Clear)
- Material: High-definition TPU for durability
- Protection: All-around scratch and impact shield
- Heat Dissipation: Helps dissipate headset heat
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Limitations and Technical Challenges Remaining
It is not yet clear how well complex Android VR applications will perform in real-world scenarios, especially those relying heavily on scripting runtimes that expect JIT. Graphical glitches observed in initial demos suggest further optimization is needed. Compatibility with all Android apps, especially those using native code or advanced graphics, remains unconfirmed. Additionally, the process currently focuses on Java-thin applications, excluding more complex JVM-based apps.
Support for runtime scripting, full hardware acceleration, and broader application compatibility are still under development, and it is uncertain when these hurdles will be fully addressed.
As an affiliate, we earn on qualifying purchases.
Upcoming Developments and Potential Improvements
Developers plan to refine the translation layer, improve graphical stability, and expand compatibility to include more complex applications. Further testing on a wider range of Android VR titles is expected, along with efforts to enable JIT support for scripting runtimes. The project’s progress will likely be shared through updates on GitHub and hacker news discussions, with eventual integration into mainstream development workflows.
Expect more demonstrations of VR applications running seamlessly on Vision Pro, potentially leading to broader adoption of cross-architecture translation tools in VR development.
As an affiliate, we earn on qualifying purchases.
Key Questions
Can this method run all Android VR apps on Vision Pro?
Not yet. While the translation layer supports many applications, compatibility with complex or JVM-based apps is still under development. Performance and graphical fidelity may vary.
Does this require modifying the original Android APKs?
No, the process involves translating libraries at runtime without modifying the APKs themselves, using tools like apktool to prepare the files for translation.
Will this approach work with future Android VR titles?
Potentially, but it depends on the complexity of the apps and the ability of the translation layer to handle advanced features like scripting runtimes and native code.
Is this official support from Apple or Google?
No, this is an experimental development from independent developers and is not officially supported by Apple or Google.
When might this become publicly available or integrated into mainstream tools?
There is no fixed timeline; ongoing development and testing are required before broader release or adoption in commercial tools.
Source: Hacker News