Compare commits

3 Commits
v1.1.0 ... main

2 changed files with 39 additions and 23 deletions

View File

@@ -19,40 +19,56 @@ so it is F-Droid-eligible. Store-listing metadata lives in `fastlane/metadata/
## A) Your own repo (fdroid.scarriffle.com) ## A) Your own repo (fdroid.scarriffle.com)
Needs the `fdroidserver` tool + Android SDK build-tools (for `aapt`). The repo is just static files (APKs + a signed index). Host + generate it on an
always-on **Debian/Ubuntu LXC on Proxmox**, and keep the APK build/signing on the
Mac (where the keystore lives).
### One-time: set up the LXC
```bash ```bash
# 1. Install the tool (macOS) # Debian/Ubuntu LXC — fdroidserver + the Android build-tools it reads APKs with.
brew install fdroidserver # or: pipx install fdroidserver apt update
apt install -y fdroidserver android-sdk-build-tools default-jdk
# (if the distro has no android-sdk-build-tools pkg, install Android command-line
# tools and `sdkmanager "build-tools;34.0.0"`, then point $ANDROID_HOME at it)
# 2. Build a SIGNED release APK (uses keystore.properties; F-Droid repos serve # Create the repo once (generates config.yml + an index-signing key)
# APKs, not AABs) mkdir -p /srv/fdroid && cd /srv/fdroid
./gradlew assembleRelease
# → app/build/outputs/apk/release/app-release.apk
# 3. Create the repo (once). Generates config.yml + an index-signing key.
mkdir -p ~/calendarr-fdroid && cd ~/calendarr-fdroid
fdroid init fdroid init
```
# 4. Drop the signed APK in and copy the store metadata **Serving:** you already run a reverse proxy, so it terminates TLS for
cp "/path/to/Calendarr Android/app/build/outputs/apk/release/app-release.apk" repo/ `fdroid.scarriffle.com`. Either point the reverse proxy straight at the
mkdir -p metadata `/srv/fdroid` directory (no webserver on the LXC needed — just `fdroidserver` to
# copy the fastlane texts/icons so descriptions show in the client: generate), or run a tiny static server on the LXC over plain HTTP and forward to
cp -r "/path/to/Calendarr Android/fastlane/metadata/android" metadata/com.scarriffle.calendarr it, e.g. `darkhttpd /srv/fdroid --port 8080` (or `caddy file-server` /
`python3 -m http.server`). Only requirement: the public URL is reachable over
**HTTPS** (the reverse proxy does that); it's plain static file serving, no
directory listing needed.
# 5. Generate/refresh the signed index ### Each release
fdroid update -c --pretty
# 6. Upload the whole ~/calendarr-fdroid/repo directory to your webserver at: ```bash
# https://fdroid.scarriffle.com/fdroid/repo # 1. On the MAC: build a SIGNED release APK (F-Droid repos serve APKs, not AABs)
./gradlew assembleRelease # → app/build/outputs/apk/release/app-release.apk
# 2. Copy APK + store metadata to the LXC
scp app/build/outputs/apk/release/app-release.apk root@lxc:/srv/fdroid/repo/
rsync -a "fastlane/metadata/android/" root@lxc:/srv/fdroid/metadata/com.scarriffle.calendarr/
# 3. On the LXC: regenerate the signed index
cd /srv/fdroid && fdroid update -c --pretty
``` ```
Users then open F-Droid → Settings → Repositories → **+** → Users then open F-Droid → Settings → Repositories → **+** →
`https://fdroid.scarriffle.com/fdroid/repo` → Calendarr appears and auto-updates. `https://fdroid.scarriffle.com/fdroid/repo` → Calendarr appears and auto-updates.
**Each new release:** bump `versionCode`/`versionName` in `app/build.gradle.kts`, Keep the OLD apks in `repo/` too (users on older versions still update). For each
`./gradlew assembleRelease`, copy the new APK into `repo/`, `fdroid update -c`, new version bump `versionCode`/`versionName` in `app/build.gradle.kts` first.
re-upload. Keep the OLD apks in `repo/` too (users on older versions still update).
*(Fully hands-off alternative: build on the LXC too — then copy the keystore +
`keystore.properties` there and run `assembleRelease` in a checkout. The Mac
split above avoids putting the signing key on the server.)*
--- ---

View File

@@ -6,7 +6,7 @@
# clonable and a git tag `v<versionName>` (e.g. v1.1.0) for each release. # clonable and a git tag `v<versionName>` (e.g. v1.1.0) for each release.
Categories: Categories:
- Time - Calendar & Agenda
License: GPL-3.0-or-later License: GPL-3.0-or-later
AuthorName: Scarriffle AuthorName: Scarriffle
WebSite: https://calendar.scarriffle.com WebSite: https://calendar.scarriffle.com