Android build — signed APK from apps/client with runtime-configurable API URL #187

Closed
opened 2026-06-20 15:44:54 +00:00 by james · 0 comments
Owner

Produce a signed Android APK / AAB from apps/client that points at a self-hoster's URL configured at runtime (no baked-in URL).

Scope

  • Decide between EAS Build (Expo's cloud) and self-hosted build runners — recommend self-hosted on a Forgejo Action runner for the self-hoster-friendly story.
  • Runtime URL: a settings screen captures the API base URL and persists in secure storage; default unset, no baked-in URL.
  • Sign with a project-managed keystore; document key rotation in an ADR-0014 follow-up if needed.
  • Tag-driven release: pushing vX.Y.Z builds an APK and attaches it to the Forgejo release (per ADR-0014 spirit).

Acceptance criteria

  • pnpm -F client build:android produces a signed APK on a fresh checkout.
  • The APK installs on Android 13+, prompts for a server URL on first launch, and exercises the full feature set.
  • Tag-driven release publishes the APK to the Forgejo release.
  • Release pipeline retains the existing signing + provenance guarantees for the API container image.

Out of scope

  • Play Store distribution.
  • iOS — not in idea.md.

Composes with

Release pipeline (ADR-0014), Linux Flatpak build, Expo client scaffolding.

Part of

#176

Produce a signed Android APK / AAB from `apps/client` that points at a self-hoster's URL configured at runtime (no baked-in URL). ## Scope - Decide between EAS Build (Expo's cloud) and self-hosted build runners — **recommend self-hosted on a Forgejo Action runner** for the self-hoster-friendly story. - Runtime URL: a settings screen captures the API base URL and persists in secure storage; default unset, no baked-in URL. - Sign with a project-managed keystore; document key rotation in an ADR-0014 follow-up if needed. - Tag-driven release: pushing `vX.Y.Z` builds an APK and attaches it to the Forgejo release (per ADR-0014 spirit). ## Acceptance criteria - [ ] `pnpm -F client build:android` produces a signed APK on a fresh checkout. - [ ] The APK installs on Android 13+, prompts for a server URL on first launch, and exercises the full feature set. - [ ] Tag-driven release publishes the APK to the Forgejo release. - [ ] Release pipeline retains the existing signing + provenance guarantees for the API container image. ## Out of scope - Play Store distribution. - iOS — not in `idea.md`. ## Composes with Release pipeline (ADR-0014), Linux Flatpak build, Expo client scaffolding. ## Part of #176
james closed this issue 2026-06-21 15:57:28 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
james/carol#187
No description provided.