Files
FitnessDroid/README.md
claude 777f627888
Some checks failed
release / build-release (push) Failing after 1m42s
Grund: Compose-app med login mot gym-API:t, VS Code-task och CI-release
- Kotlin + Jetpack Compose + Material 3, minSdk 31 (Android 12)
- GraphQL-klient (OkHttp) med login/refresh/validate/logout som webben
- Tokenlagring i DataStore, auto-refresh av JWT
- Signering via gitignorerad signing/ lokalt och Actions-secrets i CI
- VS Code build-task -> build/FitnessDroid.apk
- Gitea Actions: bygger APK på Pi5 (arm64, aapt2-override) och publicerar
  rullande latest-release

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kf4MAbZ3c3B4Xy5XfuGsCP
2026-07-23 11:59:21 +02:00

2.8 KiB

FitnessDroid

Android-klient för gym-API:t på https://gymapi.brasse-pc.eu/graphql — samma backend som gym-delen i brasse-pc.eu-v2.

  • Kräver Android 12 eller nyare (minSdk 31)
  • Kotlin + Jetpack Compose + Material 3 (Material You-dynamiska färger)
  • GraphQL över OkHttp, tokenlagring i DataStore

Installera appen på telefonen

Ladda ner FitnessDroid.apk från släppsidan (latest byggs om vid varje push till main), öppna filen på telefonen och tillåt installation från okänd källa. Uppdateringar installeras ovanpå — samma signeringsnyckel används av CI och lokala byggen.

Bygga själv

Förutsättningar (Arch/Garuda)

sudo pacman -S jdk17-openjdk android-tools

Android SDK behövs också (platform 35 laddas ner automatiskt av bygget om licensen är accepterad). Peka ut din SDK i local.properties i repo-roten:

sdk.dir=/home/<du>/Android/Sdk

Bygg

git clone https://gitea.brasse-pc.eu/brasse/FitnessDroid.git && cd FitnessDroid
./gradlew :app:assembleRelease            # signerad release-APK
# APK: app/build/outputs/apk/release/app-release.apk

I VS Code: kör build-tasken (Ctrl+Skift+B) — den lägger APK:n i build/FitnessDroid.apk. Tasken installera på telefon (adb) installerar den direkt på en ansluten telefon med USB-felsökning på.

Testa mot API:t

Logga in med ditt vanliga gym-konto (LDAP). API-url:en går att ändra under "Avancerat" på inloggningsskärmen (standard: https://gymapi.brasse-pc.eu/graphql).

Signeringsnyckeln

Nyckeln är inte incheckad (repot är publikt). Lokalt ligger den i signing/fitnessdroid.jks + signing/keystore.properties (gitignorerade); CI får samma nyckel via Actions-secrets KEYSTORE_B64 och KEYSTORE_PASSWORD. Finns ingen nyckel signeras release-bygget med debug-nyckeln så att en färsk klon ändå kan bygga — men den APK:n kan inte uppdatera en installation från släppsidan (annan signatur).

Skapa en ny nyckel (om signing/ saknas):

keytool -genkeypair -keystore signing/fitnessdroid.jks -alias fitnessdroid \
  -keyalg RSA -keysize 2048 -validity 10950 -dname "CN=FitnessDroid, O=brasse-pc.eu"
# och skriv motsvarande signing/keystore.properties (storeFile/storePassword/keyAlias/keyPassword)

CI

.gitea/workflows/release.yaml bygger en signerad APK på Pi5-runnern (arm64) vid varje push till main och lägger den på den rullande latest-releasen. Eftersom Googles aapt2 bara finns för x86_64 använder bygget en statiskt byggd arm64-aapt2 via android.aapt2FromMavenOverride.

Mer om arkitektur och planer: doc/plan.md och wikin.