New Moon is a community-built browser for Android on the Unified XUL Platform (UXP) — the Goanna engine forked from Firefox ESR-52-era Gecko that powers Pale Moon — with the historical Fennec (Firefox for Android) frontend recovered from the last UXP tree that shipped it.
- Engine: Goanna/UXP (XUL, XBL, XPCOM, classic XUL-overlay extensions)
- Frontend: Fennec-derived native Android UI (
mobile/android) - Package:
org.palemoon.community· arm64-v8a · minSdk 15 · targetSdk 24+ - Status: builds, installs, launches; the XUL/XBL pipeline runs and real HTTP/HTTPS page loads are verified. This is a retro/hobby-class browser on an ESR-52-era engine — do not treat it as a secure daily driver.
Signed APKs are published on the
Releases
page. See docs/STATUS.md and
docs/XUL-ON-ANDROID.md for exactly what is and
isn't verified.
Two apps ship on the release:
newmoon-android-arm64.apk— the browser. It writes crash reports (crash-,startup-,watch-,exit-*.txt) and a livenewmoon-session-started.txtmarker intoDownload/NewMoon/— including reports produced by a:reporterwatchdog process that survives a main-process native crash.newmoon-crash-helper.apk(org.palemoon.crashhelper) — a standalone companion that reads that shared folder via a one-tap folder grant (SAF), shows an "unclean exit" banner when the session marker is stale, lists reports with Copy/Share, can launch New Moon, and offers a launch-time logcat monitor afteradb shell pm grant org.palemoon.crashhelper android.permission.READ_LOGS(no API lets a normal app read another app's logs or ApplicationExitInfo — this is the honest limit; a death before the app's own code runs can only be seen via the stale marker or adb logcat).
Reproducible end-to-end (also encoded in
.github/workflows/build-apk.yml):
# Prereqs: JDK 17, Android SDK 34 + build-tools 34.0.0/36.x,
# Android NDK 27.2.12479018, m4, autoconf2.13
export ANDROID_SDK_ROOT=~/Android/Sdk
export ANDROID_NDK=$ANDROID_SDK_ROOT/ndk/27.2.12479018
./scripts/fetch-android-deps.sh # support/GMS AARs + ProGuard jar into SDK
./scripts/fetch-upstream.sh # pinned UXP + Pale-Moon sources (~2 GB)
./scripts/apply-patches.sh # port patches + overlay recovered sources
./scripts/build-apk.sh # mach configure && mach build && mach package
./scripts/sign-apk.sh upstream/obj-android-aarch64/dist/newmoon-*.apk out.apk
./scripts/verify-apk.sh out.apk # ABI, ELF 16KB alignment, signature, SDK levelskeystore/community.jks is a public community signing key (store/key
password newmoon-community). It exists so builds produce a consistent
signature for update continuity — it is not a security credential and is
intentionally committed.
vendor/uxp-android/— historical Android sources recovered from UXP @63295d00(Apr 2019, last tree before upstream's Fennec/Android removal).patches/— port patches applied on top of pinned UXP master: NSPR modern-NDK, Android build plumbing, configure machinery, APK packaging fixes.mozconfig/mozconfig.android-aarch64— build configuration.scripts/— fetch/patch/build/sign/verify pipeline;build-helper.shbuilds the standalone Crash Helper APK.helper/— standalone Crash Helper app sources (org.palemoon.crashhelper).docs/— archaeology, porting plan, and honest status.
- UXP/Goanna and the recovered Android sources are MPL-2.0 code Copyright © Moonchild Productions / Mozilla contributors.
- "New Moon" is an unofficial community branding used for continuity with the community Android build lineage; this project is not affiliated with or endorsed by Moonchild Productions.
- Upstream removed Android support deliberately (UXP issue #1053); this is a downstream-only effort. Staging history lives at CommunityPokeOrg/pale-moon-android.