Getting Started
Requirements
- Android 9+ (API 28+)
- arm64-v8a device
- A Unity IL2CPP game installed
Installation
Download
Download the latest release from GitHub Releases.
Setup
- Install the APK on your Android device
- Open the launcher - it will automatically scan for installed Unity IL2CPP games
- Select a game and tap Launch
- The launcher will automatically download and extract the BepInEx framework on first run
How It Works
The launcher uses Pine (an ART hook framework) to intercept the game's ClassLoader, native library loading, and UnityPlayer initialization.
A custom libmain.so and libfusion.so control the dlopen order to install an il2cpp_init hook before Unity starts. This hook launches CoreCLR and the BepInEx preloader.
Game Launch
↓
Pine intercepts ClassLoader
↓
libmain.so controls dlopen order
↓
il2cpp_init hook installed
↓
CoreCLR launched
↓
BepInEx preloader starts
↓
Mods loaded
↓
Game continuesFirst Launch
On first launch for a game:
- The launcher detects the game's Unity version
- Downloads the appropriate BepInEx framework and .NET runtime
- Downloads unstripped
libunity.so(if needed for your game) - Extracts all files to the game's data directory
- Launches the game with BepInEx injected
This process typically takes 10-30 seconds depending on your connection speed.
Updating
The launcher checks for updates on startup. When an update is available, a dialog will appear with release notes and a download link.
You can also check manually in Settings → About.