ARTICLE · 1272001
Husk:把安卓APK装进iPhone,几秒打开全屏游戏
Husk:把安卓APK装进iPhone,几秒打开全屏游戏
榜单 #99 · Java · Stars 2774 · License GPL-2.0
同一款游戏,安卓手机能玩,手里的 iPhone 却只能看着;现在可以把 APK 加进 Husk,点一下就让它在 iPhone 上全屏启动。这个由 Leviidev 开发的项目,既能让部分安卓游戏直接跑在 iPhone 处理器上,也能在需要时启动完整的 Android 系统。

GTA: San Andreas 在 iPhone 上运行的游戏画面
把 APK 变成游戏库
Husk 的入口很简单:把手里的 APK 添加到 Library,点击游戏卡片,它就会尝试全屏运行。已经下载好的安装文件不用先改成某种专用格式,项目同时支持普通 APK、.xapk、.apkm、.apks,以及 Google Play 下载产生的分包 APK 和资源包。对于只想在 iPhone 上试几款安卓游戏的人,这比先搭一套复杂的 Android 虚拟机更直接,文件准备好后就可以从同一个库里启动。游戏页面还保留了单独的设置入口,方便针对某一款游戏调整运行配置。需要换游戏时,先在当前游戏页面按下“Close Husk to Play”,再次打开 Husk,另一款游戏才会自动启动;它不是让多款 Android 游戏同时驻留在后台,而是一次运行一款。

Minecraft Dungeons 在 iPhone 上运行的游戏画面
翻译层直接跑原生代码
Husk 最适合拿来跑支持范围内的游戏,因为 Translation Layer 不会先把完整 Android 系统启动起来。游戏自己的 64 位 Android 原生代码会直接运行在 iPhone 的处理器上,Husk 则负责补上它需要的 C 库、Java 调用、OpenGL ES、Vulkan、声音、触控和控制器支持。换句话说,游戏代码没有被处理器模拟,启动过程也不必等待一个虚拟 Android 开机,所以官方给出的体验是游戏可以在几秒内启动。当前覆盖的引擎和入口包括 Unity、Unreal Engine 4、cocos2d-x、Godot 3 和 4、SDL2、SDL3、LÖVE、GameActivity、NativeActivity,以及 GTA: San Andreas 使用的 Rockstar 自有引擎。对于已经拥有这些游戏 APK、又想把设备统一到 iPhone 上的人,这条路径比完整模拟更值得优先尝试。
兼容性不够就启动系统
翻译层并不是万能入口,遇到暂时不支持的游戏,或者应用本身更依赖完整 Android 环境时,Husk 可以切换到 Emulation。这个模式会在 Husk 内通过 QEMU 启动一套完整的 LineageOS,使用者得到的是一个可以运行 Android 本身的环境,而不只是某款游戏的兼容层。它的好处是覆盖面更宽,适合拿来处理翻译层跑不了的应用,也适合确实需要进入 Android 系统的场景。代价同样写得很清楚:iOS 不向应用提供 hypervisor,因此 QEMU 需要连处理器一起模拟,速度会明显慢于 Translation Layer。实际使用时,可以把翻译层当作首选,把模拟模式留给兼容性优先、能够接受更长启动时间的应用。
先把 JIT 这道门打开
Husk 的两种运行方式都需要 JIT;如果只完成了 IPA 安装,却没有让 iOS 授予运行时调试能力,游戏并不会因为出现在 Library 里就自动跑起来。应用内的 Settings › JIT & Sideload 会引导用户选择可用方式,并把相关设置集中在一个位置。iOS 26 及更高版本可以使用内置的 StikJIT,不需要额外安装第二个应用;到了 iOS 27,还可以在系统设置中和 iPhone 配对,不需要电脑。另一种选择是把 StikDebug 安装在 Husk 旁边;在 iOS 26 以前,TrollStore 或 Dopamine 越狱环境还可以使用“Allow JIT in Apps”。因此,安装前最好先确认自己的 iOS 版本和 JIT 条件,否则会遇到“应用装好了、游戏却无法启动”的情况。
存档能导出,崩溃有报告
Husk 不只是把游戏画面显示在 iPhone 上,它还照顾了长期使用时最容易出问题的两件事:存档和故障排查。游戏页面可以把当前存档备份成 .zip,之后再恢复到同一台 iPhone,或者带到另一台 iPhone 上继续使用;换设备时不用完全从头开始。运行时支持触控和控制器,适合直接用屏幕操作,也适合接手柄玩动作类游戏。对于依赖 Google Play services 的作品,Husk 会让游戏看到该服务已经安装,但账号处于退出登录状态,所以部分只检查服务是否存在的游戏能够正常启动;Play Games 登录、云存档和购买功能则不可用。如果某款游戏让 Husk 崩溃,下次启动时会显示发生了什么,并提供可分享的报告,这给遇到兼容性问题的人留了一条明确的反馈路径。
怎么装、怎么第一次跑通
官方提供了适用于 SideStore、AltStore 等侧载工具的源,也可以从 Releases 下载 Husk.ipa,再通过 SideStore、AltStore 或 TrollStore 安装。想自己编译的人需要在 Mac 上使用 Xcode,并准备项目构建脚本调用的工具链。
https://raw.githubusercontent.com/Leviidev/Husk/main/altsource.json ./scripts/ci_build.sh ./scripts/package_ipa.sh
安装 Husk 后先完成 JIT 设置,再把一个符合条件的 APK 加进 Library,点开并确认它能进入全屏游戏画面。若运行过程中发生崩溃,重新启动 Husk,检查是否出现可分享的故障报告。
Husk 需要 iOS 16.0 或更高版本,两个运行模式都需要 JIT;自行构建还需要 Mac、Xcode、meson、ninja、pkg-config、python3、xcodegen、qemu-img,以及带有 aarch64-apple-ios target 的 Rust 工具链。
先看清边界
翻译层要求 APK 含有 64 位 arm64-v8a 原生代码,只有 32 位 ARM 库的 APK 无法运行;只用 Java、没有原生引擎的应用也不支持这条路径,需要改用 Emulation。Google Play Games 登录、云存档和购买功能不可用,完整 Android 模拟还会因为处理器模拟而明显慢于翻译层。Husk 也不能通过 App Store 分发,实际安装需要 SideStore、AltStore、TrollStore 或其他支持的侧载方式。
作者寄语
Husk 的吸引力不在于把所有安卓应用都变成 iPhone 原生应用,而在于它给了安卓游戏一个很具体的入口:先用翻译层争取更快启动,跑不了时再交给完整模拟。手里正好有支持的 64 位 APK,且能解决 JIT,才是最适合尝试它的人群。
开源项目 · iPhone · 安卓游戏 · 模拟器 · 侧载
项目地址:https://github.com/Leviidev/Husk
更多每日开源增速榜,见拾品号导航:https://daohang.bot.cd/daily-brief/















































































