Проект Klepton умеет запускать Android ARM64 VR APK на Apple Vision Pro, и JIT для этого не нужен. klepton-ld переводит Android .so-библиотеки в загружаемые Apple .dylib и .framework, которые затем линкуются в рантайм Klepton. Сейчас Klepton заточен только под Java-thin приложения — внутри нет ни ART, ни JVM.
Графика перекладывается на нативные механизмы: GLES 3.2 транслируется в поставляемую с проектом ANGLE GLES 3.0 с Metal-бэкендом, Vulkan — в MoltenVK. В гостевой части лежат переведённые Mach-O, у которых байты инструкций в основном не изменяются: libil2cpp, libunity, libunityopus, libmain, burst и другие. Импорты из этих библиотек klepton-ld резолвит в рантайм Klepton. Дальше идёт слой libklepton_bionic, который подменяет libc/libm/libdl/pthread/liblog на libSystem, libklepton_ndk (ALooper, ANativeWindow, ASensor, AAsset), libklepton_jni — синтетические JavaVM/JNIEnv, libklepton_ovrp — реимплементация ovrp_* и прочее. Поверх всего работает фронтенд-платформа (mains) и OS-специфика: MoltenVK, ANGLE, Compositor Services, ARKit, GameController, AVAudioEngine.
Есть тонкость с регистром x18. И Android, и macOS его резервируют, но часть старых Android-приложений, причём немалая, всё равно его использует, а macOS при переключении контекста обнуляет x18. klepton-ld пропатчивает все такие обращения, заменяя их на TLS-слоты на каждую библиотеку.
Klepton умеет загружать и патчить .so-файлы в рантайме через mmap, но по-настоящему это полезно только на macOS, где JIT разрешён. Вероятно, некоторым приложениям всё же понадобится JIT — если внутри скриптовый рантайм, который на него заточен: LuaJIT, V8 и так далее.
Полный гайд — в BUILDING.md. Короткая версия: хостовые зависимости ставятся через brew install pkg-config sdl3 apktool; затем apktool d -f -o beatsaber beatsaber.apk (APK подставляете свой), потом make check — полный регрессионный прогон. Скрипты быстрого запуска: ./build_run_viewer.sh собирает и запускает macOS-фронтенд Beat Saber, ./build_run_vpro.sh — фронтенд Beat Saber для Vision Pro, ./build_run_slink.sh --shell --view — macOS-фронтенд Steam VR Link (WIP). Beat Saber работает на macOS и visionOS с мелкими графическими проблемами. Steam VR Link, а также улучшение универсальности и сборочных инструментов — всё ещё WIP.