feat: APK distribution pipeline — server hosting + Pi auto-update + /app routes

This commit is contained in:
Mathieu Moran
2026-08-15 20:52:38 -04:00
parent 5039b90bc6
commit 5a5df2b323
11 changed files with 320 additions and 16 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Yaris OBD</string>
<string name="app_name">yaris-obd</string>
</resources>
+10 -8
View File
@@ -261,17 +261,19 @@ android/
- [ ] Error handling audit — most screens have error states; dashboard still shows "—" when offline
- [ ] Accessibility audit — content descriptions present on most icons; touch targets ≥48dp mostly
#### 28.8.2 — Build + distribution 🚧 (release APK signed; hosting pending)
#### 28.8.2 — Build + distribution ✅ (2026-08-15)
- [x] Release signing key: `android/keystore/release.keystore` (gitignored) + `keystore.properties`
- [x] ProGuard/R8 rules verified — release APK builds AND launches on the Pixel
- [x] APK output: `app/build/outputs/apk/release/app-release.apk` (~43 MB, signed)
- [ ] Self-hosted distribution:
- Copy APK to Pi: `scp app-release.apk [email protected]:~/app/yaris-obd/static/app/`
- Add a lightweight Pi route: `GET /app` → serves `static/app/index.html` with
download link + install instructions
- Phone flow: connect to Pi hotspot → open `http://yaris.local/app` → download APK →
install (user must enable "Install unknown apps" once)
- [ ] Commit: `feat: self-hosted distribution`
- [x] Self-hosted distribution (server → Pi → phone):
- Server: `GET /api/v1/app/latest` (public version+sha256) + `GET /app/yaris-obd.apk`
(download) + `GET/POST /app/upload` (portal page to publish a build)
- Pi: `GET /app` (download page) + `GET /app/yaris-obd.apk`; `deploy/yaris_app_updater.py`
mirrors the latest APK from the server on a systemd timer
(`deploy/yaris-app-updater.{service,timer}` + `deploy/install_app_updater.sh`)
- Phone: connect to hotspot → `http://10.42.0.1/app` → download → install
- [ ] Deploy: run `install_app_updater.sh` on the Pi; publish a build via the portal (or scp
the APK into the server's mounted `dashcam/app/` volume)
## Working notes