Hacker News 中文摘要

RSS订阅

在Apple Vision Pro上运行Android ARM64 VR APK -- Run Android ARM64 VR APKs on Apple Vision Pro

文章摘要

Klepton是一个兼容层工具,能在visionOS和macOS上运行Quest/Android XR应用的APK文件,无需JIT。它通过将Android .so库转换为Apple可加载的.dylib和.framework库,并利用ANGLE和MoltenVK实现图形接口转换,主要支持Java薄应用。

文章总结

项目概述

Klepton 是一个无需 JIT 即可在 Apple Vision Pro 上运行 Android ARM64 VR 应用的兼容层工具。

架构设计

klepton-ld 将 Android 的 .so 库转换为可加载的 Apple .dylib.framework 库,并与 Klepton 运行时链接。目前主要支持纯 Java 应用(不包含 ART 和 JVM)。

图形处理方面,GLES 3.2 被转换为定制的 ANGLE GLES 3.0(使用 Metal 后端),Vulkan 则转换为 MoltenVK。

系统架构分为三层: - 上层:转换后的 Mach-O 格式访客应用(如 libil2cpp、libunity 等) - 中间层:Klepton 运行时库(包括 bionic、NDK、JNI 和 OVRP 等模块) - 底层:前端平台和操作系统特定组件(MoltenVK、ANGLE、ARKit 等)

针对 Android 和 macOS 对 x18 寄存器的不同处理方式,klepton-ld 会修补所有 x18 的使用,改用每库 TLS 槽位。

Klepton 还支持在运行时通过 mmap 加载和修补 .so 文件,但这仅在允许 JIT 的 macOS 上有效。某些使用脚本运行时(如 LuaJIT、V8)的应用可能需要 JIT 支持。

构建方法

完整指南见 BUILDING.md。简要步骤: 1. 安装主机依赖:brew install pkg-config sdl3 apktool 2. 解包 APK:apktool d -f -o beatsaber beatsaber.apk 3. 运行回归测试: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 前端(开发中)

当前状态

Beat Saber 已在 macOS 和 visionOS 上运行,仅有少量图形问题。Steam VR Link 及通用性/构建工具的改进仍在开发中。

评论总结

根据评论内容,主要观点如下:

  1. 对LLM使用的关注(评分:无,作者m132):希望获得LLM使用披露。关键引用:"I would appreciate an LLM usage disclosure"

  2. 对苹果策略的批评(评分:无,作者terhechte):认为苹果在Vision Pro上重复iPad错误,限制软件开发,但社区仍在努力让iPadOS更实用。关键引用:"Apple seems hell-bent on repeating their iPad mistake on Vision Pro";"there is a small tinker community that works on genuinely making iPadOS useful"

  3. 技术细节讨论(评分:无,作者strong-self):指出在异常返回时x18寄存器被清零,导致Quest应用无法跨调度窗口保持状态。关键引用:"darwin zeroes x18 on any exception return";"a quest app can't keep state there for even one scheduling window"

  4. 对苹果态度的调侃(评分:无,作者treyd):暗示苹果不会喜欢此内容。关键引用:"I'm sure Apple will love this"

平衡性总结:评论呈现了对苹果限制性策略的批评(terhechte)、对社区努力的肯定(terhechte)、技术细节分析(strong-self)以及用户对透明度的需求(m132),整体偏向批评苹果封闭生态,但认可开发者创新。