Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

Husk

Leviidev/Husk | Trendshift

Husk Downloads

Android apps and games on your iPhone.

Add an APK, tap it, and it opens full-screen. Husk runs it in one of two ways, shown as the two sides of its Library:

  • Translation Layer. The game's own 64-bit Android code runs directly on the iPhone's processor, and Husk stands in for Android around it: the C library, the Java calls the game makes, OpenGL ES (through ANGLE), Vulkan (through MoltenVK), sound, touch and controllers. No Android boots, so a game starts in seconds, and its code is never emulated. See docs/04-translation-layer.md.
  • Emulation. A full Android system (LineageOS) boots under QEMU inside Husk, for apps the translation layer cannot run yet and for using Android itself. iOS gives apps no hypervisor, so the processor is emulated, and this is much slower than the translation layer. See docs/00-architecture.md.

Screenshots

Games on the Translation Layer

GTA: San Andreas
GTA: San Andreas
Minecraft Dungeons
Minecraft Dungeons
Beach Buggy Racing 2
Beach Buggy Racing 2
Geometry Dash
Geometry Dash

The app

Library
Library
Game Settings
Game Settings
Settings
Settings

What the Translation Layer runs

Games made with an engine Husk has a driver for:

  • Unity
  • Unreal Engine 4 (through Vulkan)
  • cocos2d-x
  • Godot 3 and 4 (GLES2, GLES3 and the Compatibility renderer)
  • SDL2 and SDL3, including LÖVE games
  • GameActivity (Minecraft) and NativeActivity
  • Rockstar's own engine (GTA: San Andreas)

Games see Google Play services as installed and signed out, so the ones that check for it start normally; Play Games sign-in, cloud saves and purchases are not available. Geometry Dash can load Geode mods.

An APK needs 64-bit (arm64-v8a) native code. iPhones cannot run 32-bit ARM code, so an APK that only has 32-bit libraries cannot run here. APKs and split bundles (.xapk, .apkm, .apks, or a Play download's separate split APKs and asset packs) can all be added. Apps written only in Java, with no native engine, are not supported on the translation layer; Emulation is the way to run those.

One game runs per launch of Husk. To switch, press Close Husk to Play on the other game's page; when you open Husk again, that game starts by itself.

A game's saves can be backed up to a .zip from its page and restored later, on the same iPhone or another. If a game crashes Husk, the next launch shows what happened, with a report you can share.

Installing

SideStore, AltStore and other sideloaders: add Husk's source, and the sideloader installs Husk and offers each update as it comes out.

https://raw.githubusercontent.com/Leviidev/Husk/main/altsource.json

In SideStore or AltStore: Sources › + › paste the address above.

Or by hand: download Husk.ipa from Releases and install it with SideStore, AltStore or TrollStore. It is one IPA for all of them: it carries Husk's entitlements, which TrollStore keeps, and a sideloader re-signs it with your own.

Husk needs iOS 16.0 or later.

JIT

Both the translation layer and Emulation need JIT, which on iOS comes from a debugger. Husk can get it in several ways, and walks you through each one (Settings › JIT & Sideload):

  • Built-in StikJIT (iOS 26 and later): Husk turns JIT on itself, with no second app. On iOS 27 it pairs with your iPhone from Settings, with no computer. See docs/06-built-in-jit.md.
  • StikDebug, installed alongside Husk.
  • TrollStore or a Dopamine jailbreak ("Allow JIT in Apps"), on iOS versions before 26 only. From iOS 26 only a debugger can grant JIT.

Building

Husk is built on a Mac with Xcode. The build scripts also call meson, ninja, pkg-config, python3, xcodegen, qemu-img and a Rust toolchain with the aarch64-apple-ios target.

./scripts/ci_build.sh

From a clean checkout this fetches and cross-compiles everything Husk links:

  • QEMU and its dependencies
  • ANGLE and virglrenderer
  • MoltenVK
  • the on-device pairing library

It then builds the app and writes the IPA to build/Husk.ipa. The first run takes a couple of hours, and later runs reuse what is already built. After that, ./scripts/package_ipa.sh rebuilds just the app and writes ~/Desktop/Husk.ipa.

tools/regress/run.sh plays a set of games on the Mac through the translation layer and checks each against a reference screenshot (see the top of tools/regress/cases.txt for what it needs).

Licence

GPL-2.0-or-later. Husk links QEMU, which is GPLv2, so the shipped binary is a combined GPLv2 work and the full source is public. The translation layer is Husk's own code, under the same licence. Husk cannot go on the App Store, both because of that and because it needs get-task-allow plus a debugger attaching at runtime. See docs/01-licensing.md.

关于 About

Run Android on your iPhone. Natively or Emulated.
androidemulatoriosios-development

语言 Languages

C57.8%
Swift28.8%
C++6.4%
Shell2.9%
Objective-C1.8%
Python1.0%
JavaScript0.8%
Rust0.5%
Assembly0.1%
Metal0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
337
Total Commits
峰值: 188次/周
Less
More

核心贡献者 Contributors