This repository publishes signed Android packages at fdroid.opentubex.org. It contains the stable beta package and a separately installable nightly package, plus a Lite package for each channel without yt-dlp and FFmpeg.
Scan the QR code or add the signed URL to F-Droid:
https://fdroid.opentubex.org/repo?fingerprint=99BCBB15868B41FE7263E409746D4ABCFC4D32262BEF2AB0B494BBA0929347CD
Stable and nightly releases in OpenTubeX/OpenTubeX dispatch their exact tag
to this repository. The publish workflow downloads the architecture APKs of the
latest stable and nightly releases, builds a signed F-Droid index, and deploys
the index with the landing page to GitHub Pages. F-Droid prefers architecture
APKs over universal APKs, so the repository leaves the universal APKs out to stay
below the 1 GB GitHub Pages limit.
When the stable release has a higher version code than the latest nightly, the workflow builds the stable tag with the nightly app IDs and signing key, so existing OpenTubeX Nightly and Nightly Lite users receive the stable code without switching apps. The promoted APKs are published directly in the signed F-Droid repository, without creating a GitHub release or adding extra assets to the application's stable release. Repository refreshes rebuild them until a newer nightly is published. A separate job without repository secrets or Pages permissions downloads and builds the APKs.
The APKs keep their original OpenTubeX signatures. F-Droid signs only the
repository index, using a dedicated key stored in GitHub Actions secrets. Each
run seeds the previously published index-v2.json so F-Droid keeps the date
each APK was first published. fdroidserver adds "What's new" to index-v2 only
for apps built from source, so scripts/add-whats-new.py copies it there from
index-v1 before the index is signed.
The catalog icons live in metadata/<package>/en-US/images/icon.png because
extracting icons from these APKs produces no usable catalog icon. The Lite
packages reuse the stable and nightly icons. Keep all four PNGs in sync with the
app's branding. Render the nightly PNG from the application's
_scripts/brand/icon-nightly.svg at 512 × 512 pixels to preserve its wrench badge.
Publishing checks that every app has a valid icon and phone screenshots in the
generated index using python scripts/check-app-icons.py.
All four packages use the same phone screenshots. Publishing downloads them from
the application's fastlane/metadata/android/en-US/images/phoneScreenshots/ on
development into each package's metadata/<package>/en-US/images/phoneScreenshots/.
The application's pnpm run screenshots:android updates them, and pushing the
new images publishes a nightly, which refreshes this repository.
The repository expects these Actions secrets:
FDROID_KEYSTORE_BASE64, containing the base64-encoded PKCS#12 repository keyFDROID_KEYSTORE_PASSWORD, containing the password for that key
Configure GitHub Pages to use GitHub Actions, set fdroid.opentubex.org as the
custom domain, and add a DNS CNAME from that name to opentubex.github.io.
The PUSH_TOKEN used by the OpenTubeX application repository must have write
access to this repository so it can send release dispatches.
Back up the repository key and password before the first public deployment. Replacing the key changes the fingerprint and makes existing F-Droid clients distrust future index updates.