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
- Grant All files access permission when prompted
- 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.
Launching with Mods
- Ensure you have a modpack configured (see Modpack Management)
- Select the desired modpack from the modpack list
- Tap Launch to start the game with the active modpack's mods loaded
Launching without Mods
To launch the game without any mods:
- Deselect the active modpack (tap the currently active modpack to deactivate it)
- Tap Launch
The game will start normally without BepInEx injecting any mods.
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.
