Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/eden-emulator/mirror/llms.txt

Use this file to discover all available pages before exploring further.

Android uses a completely different build process from the desktop platforms. Instead of invoking CMake directly, you build through Gradle and the Android SDK, which handles the NDK toolchain and CMake integration internally. The Android frontend lives in src/android/.

Dependencies

You need the following tools installed before building:
CMake 3.22+ is already bundled with the Android SDK, so you do not need a separate CMake installation for Android builds.

Windows-only additional dependencies

Windows requires two additional components for Android builds:
  • Visual Studio 2022 Community — select Desktop development with C++ in the installer and keep it updated.
  • Vulkan SDK — select the latest SDK. A convenience install script is provided at .ci\windows\install-vulkan-sdk.ps1.

Clone the repository

Clone Eden recursively to include all submodules:
git clone --recursive https://git.eden-emu.dev/eden-emu/eden.git
The repository will be cloned to:
  • C:\Users\<user-name>\eden on Windows
  • ~/eden on Linux and macOS

Building with Android Studio

1

Open the project

Start Android Studio. On the startup dialog, select Open, then navigate to the eden/src/android directory and click OK.
2

Select a build variant

Go to Build → Select Build Variant and select release or relWithDebInfo as the Active build variant.
3

Build or run

  • To build only: Build → Make Project
  • To build and run on a connected device: Run → Run ‘app’

Building from the terminal

1

Set up the SDK and NDK

Download the SDK and NDK from Android Studio’s SDK Manager, then export their paths:
export ANDROID_SDK_ROOT=path/to/sdk
export ANDROID_NDK_ROOT=path/to/ndk
2

Navigate to the Android source directory

cd eden/src/android
3

Build

Build a standard release with debug info:
./gradlew assembleRelWithDebInfo
Or build the optimized release (GenshinSpoof flavor):
./gradlew assembleGenshinSpoofRelWithDebInfo
To pass extra CMake variables, use the -P flag:
./gradlew assembleRelWithDebInfo -PYUZU_ANDROID_ARGS="-DOPTION=VALUE"
A Java SDK is required. On Debian-based systems: sudo apt install openjdk-17-jdk

Using the build script

A convenience script is provided at .ci/android/build.sh. On Windows, run it in Git Bash or MSYS2.
Usage: build.sh [-c|--chromeos] [-t|--target FLAVOR] [-b|--build-type BUILD_TYPE]
                [-h|--help] [-r|--release] [extra options]

Options:
    -c, --chromeos          Build for ChromeOS (x86_64) (default: false)
    -r, --release           Enable update checker; sets DEVEL=false
    -t, --target <FLAVOR>   Build flavor: legacy, optimized, standard (default: standard)
    -b, --build-type <TYPE> Build type: Release, RelWithDebInfo, Debug (default: Debug)

Extra arguments are passed to CMake. Set CCACHE=true to enable build caching.
The APK and AAB will be output into "artifacts".

Example commands

# Build legacy release with update checker
.ci/android/build.sh -r -t legacy

# Build standard release with debug info, no update checker
.ci/android/build.sh -b RelWithDebInfo

# Build optimized release with update checker for ChromeOS
.ci/android/build.sh -c -r -t optimized

Relevant CMake options for Android

The following CMake options from the CMake options reference are most relevant to Android builds. Pass them via -PYUZU_ANDROID_ARGS="-DOPTION=VALUE" or configure them in src/android/app/build.gradle.kts.
OptionDefaultDescription
YUZU_DOWNLOAD_ANDROID_VVLONDownload the Vulkan validation layer binary for Android
YUZU_USE_BUNDLED_OPENSSLON (Android)Download a bundled OpenSSL build
YUZU_USE_BUNDLED_FFMPEGON (non-UNIX)Download a pre-built FFmpeg
ENABLE_UPDATE_CHECKEROFFEnable update checking functionality
NIGHTLY_BUILDOFFCI-only flag for nightly distribution builds
Android generally does not require any CMake option changes. If you do need to adjust options, prefer editing src/android/app/build.gradle.kts directly rather than passing them on the command line.

Build docs developers (and LLMs) love