Executando APKs VR Android ARM64 no Apple Vision Pro, sem JIT necessário!
klepton-ld traduz bibliotecas Android .so em bibliotecas carregáveis Apple .dylib e .framework, que são então vinculadas ao runtime do Klepton. O Klepton atualmente se concentra apenas em aplicações Java-thin (nenhum ART, nenhum JVM).
Para gráficos, GLES 3.2 é traduzido para ANGLE GLES 3.0 vendido (com seu backend Metal), e Vulkan é traduzido para MoltenVK.
┌─────────────────────────────────────────────────────────────────┐
│ GUEST (traduzido Mach-O, bytes de instrução quase não modificados) │
│ libil2cpp · libunity · libunityopus · libmain · burst · ... │
└─────────────────────────────────────────────────────────────────┘
↕ imports resolvidos para o runtime do Klepton em `klepton-ld`
┌─────────────────────────────────────────────────────────────────┐
│ libklepton_bionic libc/libm/libdl/pthread/liblog → libSystem │
│ libklepton_ndk ALooper · ANativeWindow · ASensor · AAsset │
│ libklepton_jni JavaVM / JNIEnv sintético │
│ libklepton_ovrp reimplementação de ovrp_* │
│ ... │
└─────────────────────────────────────────────────────────────────┘
↕ Frontend plataforma (`mains`) e específicos do SO
┌─────────────────────────────────────────────────────────────────┐
│ MoltenVK (Vulkan → Metal) ANGLE (GLES 3.0) │
│ Serviços de Compositor · ARKit · GameController · AVAudioEngine │
└─────────────────────────────────────────────────────────────────┘
Enquanto tanto Android quanto macOS reservam x18, algumas (muitas) aplicações mais antigas do Android ainda usam x18 e o macOS zero x18 em context switches. Todo uso de x18 é corrigido por klepton-ld para que slots TLS por biblioteca sejam usados em vez disso.
O Klepton também tem a capacidade de carregar e corrigir arquivos .so em tempo real com mmap, mas isso é realmente útil apenas no macOS onde JIT é permitido. É provável que algumas aplicações precisem de JIT se elas utilizarem runtimes de scripting que esperam por ele (LuaJIT, V8, o que mais).
Consulte BUILDING.md para a guia completa. A versão curta:
brew install pkg-config sdl3 apktool # dependências do host
apktool d -f -o beatsaber beatsaber.apk # você fornece o APK; veja BUILDING.md
make check # varredura completa de regressãoScripts rápidos para execução:
./build_run_viewer.sh # build e execute o frontend do Beat Saber para macOS
./build_run_vpro.sh # build e execute o frontend do Beat Saber para visionOS
./build_run_slink.sh --shell --view # frontend Steam VR Link para macOS (em desenvolvimento)O Beat Saber está funcionando em macOS e visionOS com problemas gráficos menores. A integração do Steam VR Link e a melhoria da generalidade/ferramentas de construção ainda estão em desenvolvimento.

