Разработчик запустил Quest‑версию Beat Saber на Apple Vision Pro без стриминга и JIT

Разработчик под никнеймом ShinyQuagsire опубликовал Klepton — экспериментальный слой совместимости, который позволяет запускать ARM64-приложения для Meta Quest и других устройств Android XR на macOS и Apple Vision Pro. В демо автор проекта запустил Quest‑версию Beat Saber на Vision Pro без дополнительного ПК, облачного сервиса и стриминга изображения.

Klepton не эмулирует процессор, а использует архитектуру VR‑платформ. Дело в том, что Quest‑приложения и современные устройства Apple используют архитектуру ARM64, поэтому значительную часть машинных инструкций Android‑приложений можно выполнить на процессорах Apple практически без изменений.

Для этого инструмент klepton-ld переводит нативные Android‑библиотеки .so в загружаемые visionOS и macOS библиотеки .dylib и .framework. Бо́льшая часть инструкций внутри при этом остаётся в исходном виде, а обращения приложения к Android заменяют реализациями Klepton. Например, функции Android Bionic из libc, libm, pthread и других библиотек перенаправляются в системную libSystem Apple. Отдельные компоненты имитируют Android NDK, JNI и часть Oculus API, с которыми взаимодействуют Quest‑игры.

Есть отдельный слой и для графики. Вызовы OpenGL ES переводятся через ANGLE в Metal, а Vulkan — через MoltenVK. Со стороны visionOS Klepton использует нативные технологии Apple, включая Compositor Services, ARKit, GameController и AVAudioEngine.

Klepton не запускает полноценную копию Android и не содержит ART или JVM. Поэтому проект рассчитан в первую очередь на приложения, в которых основная логика находится в нативных ARM64-библиотеках. Под это требование подходит игра Beat Saber. Она создана на Unity и активно использует IL2CPP, при котором C#‑код заранее преобразуется в C++ и затем компилируется в нативный машинный код.

Благодаря этому Beat Saber может работать на Vision Pro через Klepton и без JIT‑компиляции. Вместо генерации нового исполняемого кода во время работы заранее преобразованные библиотеки помещаются внутрь подписанного приложения visionOS. На устройстве они загружаются динамически, а игровые ресурсы APK хранятся отдельно в контейнере приложения. Ресурсы используемой разработчиком версии Beat Saber занимают около 2,2 ГБ.

Код проекта открыт и доступен на GitHub.

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев