How lemonloaderx/lemonloader works
LemonLoader is an Android ARM64 payload that adapts MelonLoader to Unity IL2CPP games. The principal workflow is game startup through native bootstrap and managed hosting, followed by loader initialization, Unity/game discovery, IL2CPP support setup, and loading mods and plugins. Additional branches cover assembly resolution, Unity asset access, and compatibility APIs. The README documents runtime profiles and the external Patcher boundary; sampled source is partial, so internal startup wiring beyond explicit calls is represented conservatively.
Main entry points: Core.cs Loader core · Main.cs IL2CPP support · MelonFolderHandler.cs Content discovery · bootstrap.cpp Native bootstrap
Components 18
Android startup
- Native bootstrap
MelonLoader.Bootstrap/Platforms/Android/Native/src/bootstrap.cpp - Native entry point
MelonLoader.NativeHost/NativeEntryPoint.cs - CoreCLR runtime
Loader runtime
- Loader core
MelonLoader/Core.cs - Unity discovery
MelonLoader/InternalUtils/UnityInformationHandler.cs - Assembly resolver
MelonLoader/Resolver/AssemblyManager.cs - Search directories
MelonLoader/Resolver/SearchDirectoryManager.cs
Unity IL2CPP
- IL2CPP support
Dependencies/SupportModules/Il2Cpp/Main.cs - Mono support
Dependencies/SupportModules/Mono/Main.cs - Support interface
Dependencies/SupportModules/SupportModule_To.cs - Asset bundles
UnityUtilities/UnityEngine.Il2CppAssetBundleManager/Il2CppAssetBundleManager.cs - Image conversion
UnityUtilities/UnityEngine.Il2CppImageConversionManager/Il2CppImageConversionManager.cs
Mods and compatibility
- Content discovery
MelonLoader/Melons/MelonFolderHandler.cs - Mods and plugins
MelonLoader/Melons/MelonHandler.cs - Compatibility APIs
MelonLoader/CompatibilityLayers/MelonCompatibilityLayer.cs
Game resources
- APK asset access
MelonLoader/Utils/APKAssetManager.cs
Other components
- Unity game
- LemonLoader Patcher
Connections 18
- Unity game → Native bootstrap: starts payload
- Native bootstrap → Native entry point: enters host
- Native entry point → CoreCLR runtime: loads runtime
- CoreCLR runtime → Loader core: hosts loader
- Loader core → Unity discovery: discovers game
- Loader core → Assembly resolver: sets up resolution
- Assembly resolver → Search directories: scans directories
- Content discovery → Search directories: registers directories
- Content discovery → Mods and plugins: loads extensions
- Loader core → Content discovery: discovers content
- Loader core → IL2CPP support: initializes support
- IL2CPP support → Support interface: provides interface
- Mono support → Support interface: provides interface
- IL2CPP support → Asset bundles: enables Unity access
- IL2CPP support → Image conversion: enables Unity access
- Unity discovery → APK asset access: reads APK assets
- Mods and plugins → Compatibility APIs: exposes compatibility
- LemonLoader Patcher → Unity game: prepares APK