8BitDo Ultimate 2C Wireless Controller
Hall-effect sticks and triggers with low-latency 2.4G dongle and Bluetooth for desktop Horizon and Android phones.
Unlike PojavLauncher or Zalith, which run a full Java Virtual Machine + ANGLE/Zink OpenGL wrapper on your phone, Android ports of Horizon execute native aarch64 Rust machine code directly on Android's Vulkan API. Three MIT-licensed community repositories lead mobile development: Starling, Rayan-XOO/horizon, and GoyDevv/Horizon-Android.

Pick the port that matches your setup workflow, target server version, and phone chipset.
| Capability | Starling (starling-client) | Rayan-XOO/horizon | GoyDevv/Horizon-Android |
|---|---|---|---|
| Package ID & Repo | starling-client/starling (formerly Vasysik/horizon-android + JuanLuci/starling) | dev.horizonlab.horizon (Rayan-XOO/horizon, active 4PDA community) | com.goydevv.horizon (GoyDevv/Horizon-Android) |
| Latest Verified APK | v0.8.0 (32.85 MB) + test-0.8.1-2 Preview (48.16 MB) | horizon-0.4.7.apk (65.62 MB) | Horizon-Android-v1.0.1 (39.43 MB) |
| Supported CPU ABIs | arm64-v8a, armeabi-v7a, x86_64, x86 | arm64-v8a | arm64-v8a, armeabi-v7a, x86_64, x86 |
| PC Required for Setup? | No PC required. Downloads temporary JVM on phone and prepares 26.3 registries in ~79s | Yes (once). Downloads ~525 MB in-app + requires ~4 MB PC-built horizon-derived.zip | Imports prepared game folders or .zip packs via built-in SAF file manager |
| Multiplayer Versions | Java Edition 26.3 servers (Microsoft, Ely.by & offline accounts; GrimAC movement modes) | 1.20.2 through 26.2 via bundled ViaHorizon + 26.3 native | Java Edition 26.3 servers |
| Shaders & Mods | Iris/OptiFine shader translator, StarlingVisuals.zip, .hmod + on-phone .hnmod Compile | Prebuilt Android .hnmod ABI 4 (entity_culling.hnmod, orbital.hnmod) + .hmod | .hmod mods, 260 FPS ceiling mode, PowerVR Rogue 32-bit GL fallback |
| Touch & Input Extras | Editable HUD, Free Direction / D-pad / Analog joystick, gyro, mouse capture | MCPE/Bedrock touch layout, sneak tap toggle, Android TV horizon-keypad.json | GoyControl 4-slot sequential macro buttons + full SAF read/write provider |
Mobile Vulkan drivers vary widely across SoC vendors. Match your phone's GPU to the right APK build and renderer toggle.
| Mobile GPU Family | Recommended Build & Mode | Verified Behavior & Tuning |
|---|---|---|
| Qualcomm Snapdragon Adreno (610-830) | Vulkan + Fast Opaque Pass ON | Best mobile driver maturity. POCO F6 Pro (SD 8 Gen 2 / Adreno 740) prepares 26.3 in 79s and runs Complementary Shaders (Voxel Profile) at 59 FPS or MakeUp Ultra Fast at 87 FPS. |
| ARM Mali (G52, G57, G68, G77, G78, Immortalis) | Starling test-0.8.1-2 or Vulkan Compatibility | Install starling-preview-0.8.1-test2-arm64-v8a.apk if Mali-G57 crashes when switching apps (underlying handle is not available fixed in test2). Keep render scale at 75%-85% with shaders. |
| Samsung Exynos Xclipse (920 / 940 - S22/S24 FE/A55/A57) | Rayan-XOO 0.4.6+ or Starling v0.8.0 | Rayan-XOO 0.4.6 and 0.4.7 resolve the Xclipse Vulkan pipeline startup crash reported on Galaxy S24 FE and A55/A57. |
| Imagination PowerVR (GE8320 / BXM) & 32-bit Legacy | Starling test-0.8.1-2 or GoyDevv armeabi-v7a | PowerVR GE8320/BXM hits strict Vulkan descriptor/shader slot limits; Starling test-0.8.1-2 trims shader bindings, while GoyDevv v1.0.1 includes a 32-bit GL fallback path. |


Select your port, GPU, and storage layout to generate exact scoped-storage paths, SAF tips, and adb push commands.
# Verified Android Target Profile
Port & Package: dev.horizonlab.horizon (Rayan-XOO/horizon 0.4.7)
Active Folder: /storage/emulated/0/Android/data/dev.horizonlab.horizon/files/
Saves Path: /storage/emulated/0/Android/data/dev.horizonlab.horizon/files/saves/
Mods Path: /storage/emulated/0/Android/data/dev.horizonlab.horizon/files/mods/
Shaders Path: /storage/emulated/0/Android/data/dev.horizonlab.horizon/files/shaderpacks/
Mod Formats: .hnmod (prebuilt aarch64 cdylib) + .hmod
# Recommended GPU Settings
Renderer Mode: Vulkan + Fast Opaque Pass (ON)
Render Scale: 100% (or Auto shader profile in Starling)
Chunk Distance: 12-16 chunks (Adreno 650-830) / 8 chunks (Adreno 610)
# 1. On PC (JDK 25 + Rust): generate horizon-derived.zip once from 26.3 server.jar
git clone -b android-port https://github.com/Rayan-XOO/horizon.git
cd horizon
cargo run --release -p horizon-prepare -- --prepare --server-jar ~/Downloads/server.jar
bash packaging/android/make_derived_pack.sh
# 2. Push horizon-derived.zip (~4 MB) to phone after launching app once
adb push target/android/horizon-derived.zip /sdcard/Android/data/dev.horizonlab.horizon/files/
Fixes 'No derived pack: put horizon-derived.zip in the app folder'. Rayan-XOO downloads ~525 MB in-app over Wi-Fi, then merges your 4 MB derived pack.
Horizon desktop, Starling v0.8.0, and Rayan-XOO 0.3.7+ support Bluetooth and USB X-Input/D-Input controllers, automatically hiding touch buttons while you play.
Hall-effect sticks and triggers with low-latency 2.4G dongle and Bluetooth for desktop Horizon and Android phones.
Drift-free Hall sensors, swappable ABXY layout, and quiet face buttons tested across Windows, Linux, and Android.
Symmetrical dual-stick layout with X-Input, D-Input, and Android modes plus programmable rear hotbar paddles.
TMR electromagnetic sticks and 1000 Hz polling rate for high-refresh chunk exploration on desktop and mobile.
Affiliate disclosure: As an Amazon Associate, horizonrust.wiki earns from qualifying purchases at no added cost to you.
ABI selection, RAM budgets, anticheat safety, and Android 14/15 storage rules.
Choose arm64-v8a on almost every phone or tablet with 4 GB+ RAM made since 2018. Only install armeabi-v7a on ultra-budget phones running a 32-bit Android OS build (common on entry-level 2 GB/3 GB MediaTek or Unisoc devices) where the arm64 APK reports 'App not installed as package appears to be invalid'.
Keep at least 2.5 GB of free internal storage during initial asset extraction (~525 MB to 900 MB of prepared 26.3 assets plus shader caches) and at least 4 GB of total device RAM. Active worlds use roughly 2.2 GB of RAM at 6-8 chunks.
Yes. Both Starling and Rayan-XOO support Android pointer capture for physical USB/Bluetooth mice and full WASD + hotbar keyboard bindings. Rayan-XOO 0.4.7 also ensures the soft keyboard only opens when you explicitly tap a text box.
Yes. Rayan-XOO/horizon supports Android TV d-pad navigation and custom key remapping through a horizon-keypad.json file placed inside the app's files directory.
Strict Java Edition anticheats like GrimAC validate 8-direction WASD movement vectors and reject unconstrained analog thumbstick angles unless handled properly. Starling v0.8.0 provides explicit movement modes (Free Direction, D-pad, and Analog) so you can lock movement to vanilla-legal vectors on competitive servers.
Either switch Storage Location to /storage/emulated/0/Starling (default in Starling) or /storage/emulated/0/Horizon (added in Rayan-XOO 0.4.7), use GoyDevv's built-in DocumentsUI SAF provider in the system Files app, or push files from a PC over USB Debugging with adb push.