プログラミング
Apple Vision ProでAndroid ARM64 VR APKを実行する
Run Android ARM64 VR APKs on Apple Vision Pro (github.com)
要約
このプロジェクト「Klepton」は、Apple Vision Pro上でAndroid ARM64 VR APKを実行可能にするものです。JIT(Just-In-Timeコンパイル)は不要で、AndroidのライブラリをAppleのdylibおよびframeworkライブラリに変換してKleptonランタイムにリンクします。グラフィックスはGLES 3.2をANGLE GLES 3.0に、VulkanをMoltenVKに翻訳します。現在、Beat SaberはmacOSとvisionOSで動作し、Steam VR Linkは開発中です。
全文翻訳
Apple Vision ProでAndroid ARM64 VR APKを実行する、JIT不要!
klepton-ldはAndroidの.soライブラリをロード可能なAppleの.dylibおよび.frameworkライブラリに変換し、Kleptonランタイムにリンクします。Kleptonは現在、Javaベースのアプリケーションのみ(ART、JVMなし)に焦点を当てています。グラフィックスでは、GLES 3.2はベンダー提供のANGLE GLES 3.0(Metalバックエンド付き)に翻訳され、VulkanはMoltenVKに翻訳されます。
┌─────────────────────────────────────────────────────────────────┐
│ GUEST (翻訳された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 (Vulkan → Metal) ANGLE (GLES 3.0) │
│ Compositor Services · ARKit · GameController · AVAudioEngine │
└─────────────────────────────────────────────────────────────────┘
AndroidとmacOSはどちらもx18を予約していますが、古いAndroidアプリケーションの多く(多数)は依然としてx18を使用しており、macOSはコンテキストスイッチ時にx18をゼロクリアします。x18の使用はすべてklepton-ldによってパッチされ、代わりにライブラリごとのTLSスロットが使用されるようになります。Kleptonはmmapを使用して実行時に.soファイルをロードしてパッチする機能も持っていますが、これはJITが実際に許可されているmacOSでのみ非常に役立ちます。スクリプティングランタイム(LuaJIT、V8、その他)が期待するものを利用する場合、一部のアプリケーションはJITを必要とする可能性が高いです。
ビルド
完全なガイドについてはBUILDING.mdを参照してください。簡単なバージョン:
brew install pkg-config sdl3 apktool # ホスト依存関係
apktool d -f -o beatsaber beatsaber.apk # APKを提供します。BUILDING.mdを参照してください
make check # 完全な回帰テスト
クイック実行スクリプト:
./build_run_viewer.sh # macOS Beat Saberフロントエンドをビルドして実行
./build_run_vpro.sh # Vision Pro Beat Saberフロントエンドをビルドして実行
./build_run_slink.sh --shell --view # macOS Steam VR Linkフロントエンド(WIP)
ステータス
Beat SaberはmacOSとvisionOSで軽微なグラフィックの問題とともに動作しており、Steam VR Linkと一般的な汎用性/ビルドツールの改善はまだWIPです。