开源项目 Husk 2.0 公布:利用自研翻译层让苹果 iPhone 运行 Android 游戏,兼容超 150 款应用
独立开发者 Leviidev 近日公开了 Husk 2.0 开源项目。该项目通过自研的翻译层,使部分 Android 应用中的 64 位原生代码可直接在 iPhone 处理器上运行,无需越狱设备,支持 iOS 16 及以上系统,目前已兼容超过 150 款应用。
IT之家了解到,Husk 2.0 与传统 Android 模拟器不同。以 QEMU 为例,传统模拟器通常需模拟完整的 Android 系统,包括启动系统、加载内核和运行系统服务。而 Husk 通过翻译层绕过完整系统环境,将游戏的 DEX 文件及 .so 动态库加载到普通 iOS 应用进程中,再由自身提供游戏所需的 Android 运行环境。
具体来说,Husk 提供 C 函数库和游戏调用的 Java 接口,并通过 ANGLE 将 OpenGL ES 图形调用转换为适用于苹果平台的图形接口,同时借助 MoltenVK 实现 Vulkan 支持。该项目还处理了音频、触控和手柄输入等功能。由于兼容的原生代码可直接在实体 CPU 上执行,因此无需承担完整系统模拟带来的额外开销,部分游戏可在数秒内启动。
为实现这些功能,Husk 自行构建了一套 Android 运行环境,包括编译为 iOS 版本的 Android Runtime(ART)、将 Android bionic 函数库接口映射至 iOS 系统层,以及自研的 .so 动态库加载器。通过这些组件,Husk 在 iOS 应用与 Android 软件之间建立了一层兼容环境。
在兼容性方面,Husk 2.0 支持 iOS 16 及以上版本,可导入 APK、XAPK、APKM 和 APKS 格式的安装包,也能处理 Google Play 商店使用的分割安装包。项目支持 Unity、Unreal Engine 4、Godot 3 和 Godot 4 等游戏引擎,同时兼容 cocos2d-x、SDL2 和 SDL3,甚至能运行经典游戏《GTA:圣安地列斯》。
不过,“免越狱”安装并不意味着安装过程简单。Husk 依赖即时编译(JIT)功能,而 iOS 对 JIT 权限有严格限制,通常需通过调试器等方式授予。用户成功启用相应功能后,需通过侧载方式部署 Husk,同时目前 Husk 一次只能运行一款应用,用户切换游戏时需完全关闭并重新启动 Husk,本身有一定门槛,仅适合爱好者尝鲜体验。IT之家附 GitHub 项目地址(https://github.com/Leviidev/Husk)。