System Requirements
Android 5.0 Lollipop or higher is required to run Dolphin.
Hardware Requirements
- Processor: 64-bit processor (ARMv8 or x86-64)
- Graphics: OpenGL ES 3.0 or higher (standard desktop OpenGL features recommended for best performance)
Performance Considerations
Performance varies heavily with driver quality. See the Dolphin and OpenGL Drivers article for more information.Development Prerequisites
Install Android Studio
Download and install Android Studio with default options.Android Studio will automatically download required SDK components and tooling when you open the project.
Building with Android Studio
Open Project
Open the
Source/Android project in Android Studio.Let any background tasks finish. Android Studio will automatically:- Download required SDK components
- Download build tools and dependencies
- Sync Gradle files
Wait for Sync
Wait for Gradle sync and background tasks to complete.You can monitor progress in the bottom status bar.
Build System Overview
Dolphin’s Android app uses a dual build system:Gradle
Compiles the Java/Kotlin Android application code.
CMake
Compiles Dolphin’s native C++ component.
The Gradle script automatically runs CMake builds when building the Java code. You don’t need to invoke CMake manually.
Code Style Configuration
The project maintains a custom IntelliJ/Android Studio style file for consistent Java and Kotlin formatting.Open Settings
Navigate to File > Settings > Editor > Code Style(On macOS: Android Studio > Settings > Editor > Code Style)
Import Scheme
- Click the gear icon
- Choose Import Scheme
- Select
Source/Android/code-style-java.xmlfrom the repository
Format Code Before Committing
Before submitting a pull request, reformat any Java or Kotlin files you modified:Re-run formatting after edits to keep spacing, imports, and wrapping consistent with the rest of the project.
Command-Line Building
For command-line users or CI/CD pipelines:Windows Users
On Windows, usegradlew.bat instead of ./gradlew:
Project Structure
Key directories inSource/Android:
Troubleshooting
Gradle sync fails
Gradle sync fails
- Ensure you have a stable internet connection
- Click File > Invalidate Caches and Restart
- Delete
.gradlefolder and sync again:
CMake build fails
CMake build fails
Ensure submodules are initialized:Check that NDK is installed in Android Studio:
- Tools > SDK Manager > SDK Tools
- Check NDK (Side by side)
Build fails with submodule errors
Build fails with submodule errors
Ensure you’ve initialized and updated all submodules:
Device not detected
Device not detected
- Enable Developer Options on your Android device:
- Go to Settings > About Phone
- Tap Build Number 7 times
- Enable USB Debugging in Developer Options
- Connect device and accept the debugging prompt
- Verify connection:
Installation fails on device
Installation fails on device
Your device may not meet the minimum requirements:
- Android 5.0+ required
- 64-bit processor required (ARMv8 or x86-64)
- OpenGL ES 3.0+ support required
Slow build times
Slow build times
- Enable Gradle daemon (usually enabled by default)
- Increase Gradle memory in
gradle.properties:
- Use parallel builds:
Testing on Devices
Physical devices are strongly recommended for testing Dolphin. Emulator performance is typically insufficient for GameCube/Wii emulation.
Recommended Test Devices
- Recent flagship devices (Snapdragon 8 series, Google Tensor, etc.)
- Devices with good OpenGL ES driver support
- At least 4GB RAM recommended
Performance Tips
Use Release Builds
Debug builds are significantly slower. Always test performance with release builds.
Check Driver Support
Performance varies heavily with GPU driver quality. See the driver quality article for details.
Test on Real Hardware
Android emulators cannot accurately represent Dolphin performance. Always test on physical devices.
Monitor Thermal Throttling
GameCube/Wii emulation is demanding. Monitor device temperature during extended testing.
Contributing
When contributing to Dolphin Android:- Follow the code style by importing
code-style-java.xml - Reformat code before committing
- Test on multiple devices if possible
- Ensure both debug and release builds work
- Update submodules when necessary