Documentation
On this page

Guides

Build guide

From a manifest checkout to the root image and the recovery zip.

Release 1 is coming, not yet available. Source available with release 1.

The commands are on the Build page. This is how the build is put together.

Products and variants

The tree is an Android-style checkout: a manifest, one repository per part, build/envsetup.sh, lunch, mka. lunch with no argument lists the products. A device’s device.conf gives them:

ProductWhat it is
mapple_<device>the development layout: the root in the xnusys partition, made by hand
mapple_<device>_singleone OS, installed by the zip, the root on userdata; listed when device.conf has single_* keys
mapple_<device>_splitAndroid and iOS side by side; listed when it has split_* keys (repo init ... -g default,splitboot)

The variant after the dash is userdebug (a DEVELOPMENT kernel, the default) or user (a RELEASE kernel).

What mka makes

With no target, mka runs them all, in this order: ipsw headers kernel shim loader adt payload installer bootimage userland manager audio gpu rootimage rootsparse zip. Any of them can be named alone. Steps that need sudo print the command and stop; run it, then mka again.

NAME=value options: IPSW=path your own copy of the pinned iOS file (otherwise it is downloaded from Apple into out/ipsw/), ANDROID_BOOT=path a backup of your phone’s boot partition (the boot image chains the loader in front of it), KERNEL=path a kernel already built, TOUCH_FW=path the touch firmware for the payload, XCODE15_DEVELOPER_DIR=path Xcode 15.4’s Developer directory.

Everything lands under out/target/product/<device>/. A device’s loader flags and boot-args differ per product: each product’s loader, payload, boot image and zip are in the product’s own folder (single/, split/; the development layout’s at the top).

Source: envsetup.sh and core/mka.sh of mapple_build, branch build at 375b298 (not on main yet).

Applies to realme 8i (spaced), release 1 · Updated 14 November 2026