| Tool | Version |
|---|---|
| Android Studio | Current stable |
| JDK | 17 (not 21 — required by the Android Gradle Plugin) |
| Git LFS | Any |
| Android SDK | compileSdk 35 |
| NDK | 27.3.13750724 — only needed for the native shims and any core built from source |
| CMake | 3.22.1 — same |
Submodules and LFS objects are both required. A plain git clone produces a tree that will not
build.
git clone --recursive https://github.com/WinNative-Emu/WinNative.git
cd WinNative
git lfs pull # fetches imagefs
git submodule update --init --recursive
Android Studio: open the WinNative directory, let Gradle sync, then Build > Build APK(s).
Command line:
./gradlew assembleStandardDebug
On Windows use .\gradlew.bat. Substitute the flavor name for a branded build, for example
./gradlew assemblePubgDebug.
All four flavors build the same app. They differ only in application id, which is what lets a device’s game booster or benchmark detection treat WinNative as a known title, and what lets several forks sit side by side.
| Flavor | Application id | Why |
|---|---|---|
standard |
com.winnative.cmod |
Standard package name for side-loading alongside other forks |
ludashi |
com.ludashi.benchmark |
Forces both max GPU and CPU clocks on some devices (performance-mode trigger) |
antutu |
com.antutu.ABenchMark |
Forces max GPU clocks on most devices (AnTuTu benchmark spoof) |
pubg |
com.tencent.ig |
PUBG package name, which unlocks some game-booster advanced features |
Gradle tasks follow the usual assemble<Flavor><BuildType> pattern, and output lands in
app/build/outputs/apk/<flavor>/<buildType>/.
The APK carries no retro console cores. Each core is built from its own fork under the
WinNative-Emu org, and
Retro-Consoles packs every core plus the
Dolphin and ARMSX2 runtime data into one retro-consoles.tzst. The app downloads and verifies
it on demand from Settings > Retro > Download console cores, so a core update does not need
an app release.
To change a core, change its fork and re-run the Retro-Consoles bundle workflow. Nothing in this repository needs to be rebuilt for a core-only change.
The :armsx2 and :dolphin Gradle modules in this repository are the Android host front-ends
for the PlayStation 2 and GameCube/Wii emulators, not the emulators themselves. How the fork
produces each native core is documented in armsx2/UPSTREAM.md and
cores/DOLPHIN_EMBED.md.
WinNative links against a prebuilt libretrodroid.aar rather than building the frontend here.
It is published from the winnative branch of
WinNative-Emu/LibretroDroid, and the exact
build shipped by any given APK is pinned by release tag and SHA-256 in
tools/libretrodroid.version. See EMULATOR_CREDITS.md for the
corresponding-source statement that goes with it.