# 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](https://gitea.brasse-pc.eu/brasse/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](https://gitea.brasse-pc.eu/brasse/FitnessDroid/releases) (`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) ```bash 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: ```properties sdk.dir=/home//Android/Sdk ``` ### Bygg ```bash 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): ```bash 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`](doc/plan.md) och [wikin](https://gitea.brasse-pc.eu/brasse/FitnessDroid/wiki).