Build System

Omni builds with the Gradle Kotlin DSL, Android Gradle Plugin 9.1 and Kotlin 2.2. This page takes you from a fresh clone to a signed APK.

Prerequisites

ToolVersion
Android StudioLadybug or newer
JDK17
Android SDKcompileSdk 36, minSdk 26
Device / emulatorAndroid 8.0+ (API 26)

Build and run

# Clone
git clone https://github.com/REBEL-ROOT/omni-browser.git
cd omni-browser

# Debug build (runs on connected device / emulator)
./gradlew :app:installUniversalDebug

# Release APKs for all ABIs
./gradlew :app:assembleRelease

ABI product flavors

GeckoView ships per-ABI native libraries, so Omni defines three flavors in a single abi dimension. Each gets a versionCode offset so the Play Store can serve the right one:

FlavorABIversionCode offset
universalall+1,000,000
armarmeabi-v7a+2,000,000
aarch64arm64-v8a+3,000,000

With a base versionCode of 2030, the aarch64 release of v1.2.6.4 is 3002030.

Release configuration

buildTypes {
    release {
        isMinifyEnabled = true
        isShrinkResources = true          // R8 full mode
        proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"))
        signingConfig = signingConfigs.getByName("release")
        // Native debug symbols for Play Console
        ndk { debugSymbolLevel = "SYMBOL_TABLE" }
    }
}

The GeckoView dependency

GeckoView comes from Mozilla’s content-filtered Maven repository, pinned per ABI:

maven {
    url = uri("https://maven.mozilla.org/maven2")
    content { includeGroupByRegex("org\\.mozilla\\.geckoview.*") }
}

// per-ABI artifacts + a universal artifact
implementation("org.mozilla.geckoview:geckoview-omni:145.0.20251124145406")

The build also explicitly excludes io.opencensus to avoid pulling in a telemetry-flagged dependency (relevant for F-Droid).

Continuous integration

Two GitHub Actions workflows drive quality and releases:

16 KB page alignment

Native libraries must be built with 16 KB memory-page alignment (an NDK requirement for newer devices). See CONTRIBUTING.md for the exact flags.

F-Droid

com.rebelroot.omni.yml at the repo root is the F-Droid build metadata, using AutoUpdateMode by tag. F-Droid builds are reproducible and signed with the F-Droid key.

Related