Build the flashable zip

Prerequisites

All build methods require:

  • Java 17 — the build toolchain requires Java 17 or later. The CI uses the Eclipse Temurin Java distribution, which is also recommended locally. If you use asdf, run asdf install in the project root to install the exact version defined in .tool-versions.

  • Shell — the main build script (build.sh) uses Bash by default, but it is written to be compatible with most POSIX-compliant shells; special care is taken to ensure BusyBox compatibility. Bash is pre-installed on Linux and macOS. On Windows, use build.bat instead — it invokes build.sh via the bundled BusyBox for Windows (no extra installation required).

Additional requirements depending on the build method:

  • make / pdpmake — for the make build method: install the make tool on your system.

  • Gradle wrapper — for the ./gradlew build method: no separate installation is needed; the wrapper (gradlew / gradlew.bat) included in the repository downloads the correct Gradle version automatically.

  • VS Code — for the VS Code build method: install Visual Studio Code.

make / pdpmake

Full flavour

Includes all components (proprietary and open-source):

make buildota

Test the build

Run the flashable zip in a simulated Android recovery environment on your PC to see the results:

make installtest

Note

Run buildota first so that the zip exists in the output/ folder.

Gradle wrapper

Full flavour

Includes all components (proprietary and open-source):

./gradlew buildOta

Test the build

Run the flashable zip in a simulated Android recovery environment on your PC to see the results:

./gradlew installTest

Note

Run buildOta first so that the zip exists in the output/ folder.

VS Code

Full flavour

Includes all components (proprietary and open-source):

Open the project in VS Code and run the buildOta task.

Test the build

Run the flashable zip in a simulated Android recovery environment on your PC to see the results:

Open the project in VS Code and run the installTest task.

Note

Run buildOta first so that the zip exists in the output/ folder.