2026-09-18 17:48:04 +00:00
|
|
|
# F-Droid distribution
|
|
|
|
|
|
|
|
|
|
F-Droid builds use the application ID `social.flotilla.fdroid`. Preparation removes
|
|
|
|
|
Firebase, Google Services, Plausible, and the ACINQ native secp256k1 library.
|
|
|
|
|
Welshman's optional `nostr-wasm` accelerator uses its pure JavaScript verifier.
|
|
|
|
|
The normal Play/Zapstore build is unchanged.
|
|
|
|
|
|
|
|
|
|
Background notifications use `AndroidPushFallbackWorker`: WorkManager polls the
|
|
|
|
|
configured relays about every 15 minutes and posts local notifications. Android
|
|
|
|
|
Doze and background scheduling can delay delivery further.
|
|
|
|
|
|
|
|
|
|
Pomade login, registration, and key recovery use the JavaScript Argon2 adapter.
|
|
|
|
|
With Pomade's parameters (t=3, m=64 MiB, p=2, 32-byte output), a benchmark on a
|
|
|
|
|
2-core x86 machine measured 426 ms with `hash-wasm` versus 4.0 s with the adapter,
|
|
|
|
|
with matching digests. Physical-device timing has not yet been measured.
|
|
|
|
|
|
|
|
|
|
## Build
|
|
|
|
|
|
|
|
|
|
Preparation changes source and dependencies, so run it in a disposable checkout
|
|
|
|
|
with the Node, pnpm, Java, Android SDK, and Gradle versions pinned by this repository.
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
corepack enable
|
2026-09-24 02:47:46 +00:00
|
|
|
./scripts/fdroid/prepare.sh
|
|
|
|
|
./scripts/fdroid/build.sh
|
2026-09-18 17:48:04 +00:00
|
|
|
cd android
|
|
|
|
|
./gradlew assembleFdroidRelease
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
After preparation and the asset build, run the BouncyCastle key-operation and
|
|
|
|
|
BIP-340 vector tests from `android/` with:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
./gradlew :app:testFdroidDebugUnitTest --tests social.flotilla.notifications.FallbackSecp256k1Test
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
`fdroid/app.gradle` registers `fdroid/tests` only in the prepared checkout.
|
|
|
|
|
|
|
|
|
|
The unsigned APK is written to
|
|
|
|
|
`android/app/build/outputs/apk/fdroid/release/app-fdroid-release-unsigned.apk`.
|
|
|
|
|
F-Droid should run preparation before its source scan, run the asset build afterward,
|
|
|
|
|
and use its configured Gradle runner for `assembleFdroidRelease`.
|
|
|
|
|
|
|
|
|
|
The F-Droid recipe can use:
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
subdir: android/app
|
|
|
|
|
gradle:
|
|
|
|
|
- fdroid
|
|
|
|
|
prebuild:
|
2026-09-24 02:47:46 +00:00
|
|
|
- ../../scripts/fdroid/prepare.sh
|
2026-09-18 17:48:04 +00:00
|
|
|
build:
|
2026-09-24 02:47:46 +00:00
|
|
|
- ../../scripts/fdroid/build.sh
|
2026-09-18 17:48:04 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Updates
|
|
|
|
|
|
|
|
|
|
Stable releases use bare version tags such as `1.9.1`. Proposed update metadata:
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
UpdateCheckMode: Tags ^[0-9]+\.[0-9]+\.[0-9]+$
|
|
|
|
|
UpdateCheckData: 'android/app/build.gradle|(?m)^\s*versionCode\s+(\d+)\s*$|.|(?m)^\s*versionName\s+"([^"]+)"\s*$'
|
|
|
|
|
AutoUpdateMode: Version
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
The initial `fdroiddata` submission must still review scanner exceptions for FLOSS
|
|
|
|
|
build tools, optional OpenRouter use for a possible `NonFreeNet` declaration, and
|
|
|
|
|
the final F-Droid signing certificate for Android App Links.
|