The Waterfox for Android browser is based on Fenix.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/
For feature development, you can build a local development version quickly:
-
Download Clang (similar to CI):
mkdir -p $HOME/.mozbuild curl -L https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/gecko.cache.level-3.toolchains.v3.linux64-clang-20.latest/artifacts/public/build/clang.tar.zst -o clang.tar.zst tar -xvf clang.tar.zst -C $HOME/.mozbuild
-
Build GeckoView:
./mach build
-
Open in Android Studio:
- Open Android Studio
- Select the
fenix
project as the module to debug/release - You can now debug and develop features directly in Android Studio
To create a production-equivalent build locally (similar to what CI does):
-
Set up environment variables:
export GRADLE_MAVEN_REPOSITORIES="https://maven.google.com/,https://repo.maven.apache.org/maven2/,https://plugins.gradle.org/m2/,https://maven.mozilla.org/maven2/" export MOZ_BUILD_DATE="$(date +'%Y%m%d%H0000')"
-
Download and set up Clang:
mkdir -p $HOME/.mozbuild curl -L https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/gecko.cache.level-3.toolchains.v3.linux64-clang-20.latest/artifacts/public/build/clang.tar.zst -o clang.tar.zst tar -xvf clang.tar.zst -C $HOME/.mozbuild
-
Build GeckoView for multiple architectures:
For ARM (armeabi-v7a):
export MOZCONFIG=".mozconfig-arm-linux-androideabi" rustup target add thumbv7neon-linux-androideabi ./mach build ./mach package ./mach gradle :geckoview:assemble
For ARM64 (arm64-v8a):
export MOZCONFIG=".mozconfig-aarch64-linux-android" rustup target add aarch64-linux-android ./mach build ./mach package ./mach gradle :geckoview:assemble
For x86_64:
export MOZCONFIG=".mozconfig-x86_64-linux-android" rustup target add x86_64-linux-android ./mach build ./mach package ./mach gradle :geckoview:assemble
-
Build Fat AAR:
export MOZ_ANDROID_FAT_AAR_ARMEABI_V7A="$(pwd)/obj-arm-linux-androideabi/gradle/build/mobile/android/geckoview/outputs/aar/geckoview-release.aar" export MOZ_ANDROID_FAT_AAR_ARM64_V8A="$(pwd)/obj-aarch64-linux-android/gradle/build/mobile/android/geckoview/outputs/aar/geckoview-release.aar" export MOZ_ANDROID_FAT_AAR_X86_64="$(pwd)/obj-x86_64-linux-android/gradle/build/mobile/android/geckoview/outputs/aar/geckoview-release.aar" ./mach build
-
Build Release APKs:
./gradlew assemblefenixRelease
-
Output Locations: After building, your files will be located at:
APK files:
objdir/gradle/build/mobile/android/fenix/app/outputs/apk/fenix/release/