# TPP Kierowca Natywna aplikacja Android Jetpack Compose dla kierowcow TPP. ## Funkcje - Logowanie numerem telefonu i kodem OTP. - Lista dzisiejszych kursow kierowcy. - Szczegoly kursu: relacja, kontrakt, status, pojazd i notatki. - Dodawanie zdjec ladunku z aparatu lub galerii. - Podglad zdjec ladunku w aplikacji. ## Build ```bash ./gradlew :app:assembleDebug ``` ## Testy ```bash ./gradlew :app:testDebugUnitTest ``` ## Release Gitea i Google Play Przed wydaniem zapisz wszystkie zmiany źródłowe w commicie. Następnie uruchom: ```bash ./scripts/release-android.sh ``` Skrypt automatycznie zwiększa `versionCode` i ostatni człon `versionName`, uruchamia testy, buduje podpisany APK oraz AAB, a po poprawnym buildzie pyta, czy wysłać aktualizację do Google Play. Po odpowiedzi „tak” publikuje AAB w skonfigurowanym teście zamkniętym i wysyła zmiany do weryfikacji. Następnie tworzy commit wersji, tag, push i Gitea Release. Artefakty zostają również zapisane lokalnie w `release-artifacts//`. Do publikacji Google Play konto serwisowe musi mieć dla aplikacji `pl.firmatpp.kierowca` uprawnienia „Wyświetlanie informacji o aplikacji (tylko do odczytu)” oraz „Publikowanie aplikacji na ścieżkach testowych”. Pobrany klucz JSON umieść bezpośrednio w folderze `scripts`, na przykład: ```text scripts/google-play-service-account.json ``` Skrypt sam znajduje jedyny plik `scripts/*.json`, sprawdza, czy jest prawidłowym kluczem konta serwisowego, i używa go do autoryzacji. Pliki `scripts/*.json` są ignorowane przez Git i nie mogą zostać przypadkowo dodane do repozytorium. Jeśli w folderze znajduje się więcej niż jeden prawidłowy klucz, skrypt przerwie działanie i poprosi o pozostawienie jednego. `GOOGLE_PLAY_TRACK` musi być identyfikatorem istniejącego testu zamkniętego. Domyślna wartość to `alpha`. Opcjonalnie można ustawić `GOOGLE_PLAY_PACKAGE_NAME` i `GOOGLE_PLAY_RELEASE_LANGUAGE` (domyślnie `pl-PL`). Zmienna `GOOGLE_PLAY_SERVICE_ACCOUNT_CREDENTIALS` pozostaje opcjonalnym sposobem wskazania klucza spoza folderu `scripts`. Skrypt nie zapisuje tokenu ani klucza w repozytorium; prywatny klucz tymczasowy jest usuwany po zakończeniu. Przed zatwierdzeniem skrypt waliduje edycję Google Play. Commit edycji jawnie wysyła zmiany do weryfikacji. Jeżeli inne zmiany są już sprawdzane, skrypt nie anuluje ich — kończy się błędem i można go wznowić po zakończeniu poprzedniej weryfikacji. Jeżeli na koncie jest włączone publikowanie zarządzane, po akceptacji Google nadal trzeba wybrać „Opublikuj zmiany” w Play Console; bez publikowania zarządzanego zaakceptowane wydanie zostanie udostępnione testerom automatycznie. Awaryjne wydanie wyłącznie do Gitea, bez Google Play: ```bash ./scripts/release-android.sh --skip-google-play ``` W środowisku bez interaktywnego terminala decyzję trzeba podać jawnie: ```bash ./scripts/release-android.sh --publish-google-play ``` Do autoryzacji Gitea używany jest `GITEA_TOKEN` albo dane zapisane w Git credential helper. Jeśli publikacja została przerwana już po utworzeniu commita wersji, można ją wznowić: ```bash ./scripts/release-android.sh --reuse-current ```