Building PojavLauncher yourself gives you full control over the code, lets you test local changes, and produces a debug APK without waiting for an official release. The quickest path takes only two commands; the detailed path walks through every dependency so you know exactly what goes into the final APK.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/pojavlauncherteam/pojavlauncher/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before you start, make sure the following tools are available on your machine:| Tool | Notes |
|---|---|
| Git | Used to clone the repository |
| JDK 11 or later | Required by the Gradle build system (org.gradle.jvmargs=-Xmx4096M is set in gradle.properties) |
| Android SDK | Install via Android Studio or the standalone command-line tools |
Android NDK r25c (25.2.9519653) | The ndkVersion is pinned in app_pojavlauncher/build.gradle |
| Android Build Tools 34 | Specified as buildToolsVersion = '34.0.0' |
Quick Build (Recommended)
The repository is configured to download all pre-built native dependencies automatically when you run Gradle. This is the fastest way to get a working APK.Locate the output APK
After a successful build, the APK is written to:Transfer the
.apk file to your Android device and install it as described in the Installation guide.Gradle downloads several gigabytes of dependencies on a clean build. The build daemon is allocated 4 GB of heap (
-Xmx4096M in gradle.properties) — make sure your machine has at least 4 GB of RAM free before starting.Detailed Build
If you need to customise native dependencies — for example, to use a self-compiled JRE or a patched LWJGL3 — follow these steps in order.Step 1 — Java Runtime Environment (JRE)
PojavLauncher bundles a mobile port of OpenJDK for ARM and x86 Android targets. You have two options:- Download pre-built JRE (recommended)
- Build the JRE yourself
- Navigate to the android-openjdk-build-multiarch Actions page on GitHub.
- Open the most recent successful CI run.
- Download the
jre8-pojavartifact (a zip containing pre-built JREs for all supported architectures). - Extract the zip and place its contents in the expected location inside your PojavLauncher working directory (follow any
READMEnotes in the artifact for exact placement).
GitHub artifact downloads require a free GitHub account. Log in before attempting to download.
Step 2 — LWJGL3
PojavLauncher uses a custom fork of LWJGL3 with Android-specific patches. Build instructions are maintained in the lwjgl3 fork repository.Step 3 — Update the Language List
Translations are managed through Crowdin, which adds new language resources automatically. Because of this, the language list file must be regenerated before each build — otherwise the build will fail or produce an incomplete APK. From the root of the repository, run the appropriate script for your platform:- Linux / macOS
- Windows
Step 4 — Build the GLFW Stub
The launcher’s input system depends on a custom GLFW stub (jre_lwjgl3glfw). Build it before assembling the main APK:
- Linux / macOS
- Windows
Step 5 — Build the Launcher APK
With all dependencies in place, assemble the final debug APK:- Linux / macOS
- Windows
Build Variants
Theapp_pojavlauncher module defines several build types you can target:
| Gradle task | Description |
|---|---|
assembleDebug | Debug build with .debug application ID suffix — safe to install alongside the release APK |
assembleRelease | Release build (no minification by default to preserve java.awt references) |
assembleProguard | Debug variant with ProGuard minification and resource shrinking enabled |
assembleProguardNoDebug | Same as proguard but with debuggable false — suitable for non-Play release testing |
assembleGplay | Google Play release variant (requires GPLAY_KEYSTORE_PASSWORD environment variable) |
The Gradle daemon is configured with
org.gradle.configureondemand=true in gradle.properties. This is required because jre_lwjgl3glfw must compile with Java 8 while app_pojavlauncher uses plugins that require Java 11. Do not remove this setting.Subprojects
settings.gradle declares the following Gradle subprojects — all of them are included in the repository:
assembleDebug task will automatically trigger the forge_installer:jar, arc_dns_injector:jar, and jre_lwjgl3glfw:jar tasks via the mergeDebugAssets dependency declared in app_pojavlauncher/build.gradle.