The very first time you tap Launch in Nebula, the app does considerably more work than on any later launch. Before the game can run BepInEx IL2CPP mods on Android, FusionCore must prepare the Unity runtime environment and generate IL2CPP interop assemblies for your specific Among Us build. This only needs to happen once per game version, but it takes time, memory, and an uninterrupted run to complete successfully.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Nebula-Modmakers/Nebula-Launcher/llms.txt
Use this file to discover all available pages before exploring further.
What Nebula does on first launch
After you press Launch, the bootstrap screen appears and walks through the following sequence. Each phase is shown as a status message on screen.Preparing target package
Nebula verifies the Among Us package is installed and resolves its launcher activity before any further work begins.
Copying Unity data
FusionCore copies the Unity
bin/Data assets from the game package into a private working directory that BepInEx can access.Checking runtime version
The exact Unity engine version is read from the copied data. This determines which native Unity library is required.
Preparing the native Unity runtime
FusionCore checks whether a compatible unstripped
libunity is already cached.Downloading unstripped libunity
If the library is not already cached, it is downloaded automatically for your device’s ABI. A download progress bar is shown during this step.
Extracting runtime files
The bundled
.NET (dotnet-arm64) and BepInEx (BepInEx-arm64) ZIP archives are extracted to their working directories. This step is skipped if the current runtime version is already installed.Registering native libraries
FusionCore enumerates the game’s native
.so libraries and registers them with the mod loader so they can be resolved at runtime.Installing hooks
FusionCore installs class-loader, package-manager, and Unity player hooks into the game process before its own
onCreate fires.IL2CPP generation
Once the game activity starts, BepInEx runs Cpp2IL and generates the IL2CPP interop assemblies for Among Us. This is the most time-consuming part of the entire first-launch flow. The on-screen status message will update to indicate that interop generation is in progress.- Duration: generation can take up to 8 minutes on a typical device.
- Memory usage: the process is memory-intensive. Android may attempt to reclaim RAM from other apps while it runs.
- Device stability: on some phones the device can become temporarily sluggish or unresponsive. This is normal behaviour and does not indicate a hardware problem.
- Do not close the app. While the spinner is moving, Nebula and FusionCore are actively working. Interrupting the process before it completes forces everything to start over.
If IL2CPP generation is interrupted
Android can kill the game process during IL2CPP generation, especially on devices with limited free RAM. If Nebula reports that generation was interrupted when you next open the app, follow these steps:- Reopen Nebula Launcher.
- Press Launch again.
- Leave the device on the table and do not use other apps during generation.
- Do not repeatedly close or reopen the launcher during this stage — each forced interruption discards progress for that run.
Subsequent launches
Once IL2CPP interop assemblies have been generated successfully, they are cached on the device. Every launch after the first skips the generation step entirely. The runtime extraction steps are also skipped as long as the installed runtime version has not changed. As a result, later launches are considerably faster than the first.For help with launch failures that persist beyond a second attempt, see Common Issues.