Comunidade

GitHub - shinyquagsire23/Klepton: Camada de compatibilidade e relinkador sem JIT para executar APKs Quest/Android XR em visionOS e macOS · GitHub

O projeto Klepton permite executar APKs de realidade virtual do Android em dispositivos Apple Vision Pro e macOS sem a necessidade de Just-In-Time (JIT). Ele traduz bibliotecas Android para formatos compatíveis com o sistema operacional da Apple, como .dylib e .framework, além de converter APIs gráficas como GLES 3.2 e Vulkan para suas contrapartes nativas no macOS e visionOS.

Compartilhar
JIT-less relinker and compatibility layer for running Quest/Android XR APKs on visionOS and macOS - shinyquagsire23/Klepton

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ão

Scripts 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.

Fonte original

Conteúdo traduzido e adaptado pela redação do Notícias Mobile. Confira também a matéria na fonte original.

Leia a matéria completa