#!/usr/bin/env bash # # Erstellt eine Release-APK und benennt sie nach der Versionsnummer aus der # pubspec.yaml, z. B. version: 353.0.0+353 -> a353.apk # set -euo pipefail # In das Verzeichnis des Scripts wechseln (Projekt-Root) SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" PUBSPEC="pubspec.yaml" if [[ ! -f "$PUBSPEC" ]]; then echo "Fehler: $PUBSPEC nicht gefunden." >&2 exit 1 fi # Version aus pubspec.yaml lesen (z. B. "353.0.0+353") VERSION_LINE="$(grep -E '^version:' "$PUBSPEC" | head -n1)" FULL_VERSION="$(echo "$VERSION_LINE" | sed -E 's/^version:[[:space:]]*//')" # Major-Versionsnummer extrahieren (alles vor dem ersten Punkt) MAJOR="${FULL_VERSION%%.*}" if [[ -z "$MAJOR" ]]; then echo "Fehler: Konnte Versionsnummer nicht aus '$VERSION_LINE' ermitteln." >&2 exit 1 fi APK_NAME="a${MAJOR}.apk" echo "Version aus pubspec.yaml: $FULL_VERSION" echo "Ziel-APK-Name: $APK_NAME" echo # Release-APK bauen BUILD_ARGS=(--release) if [[ -f "config/vhs.local.json" ]]; then BUILD_ARGS+=(--dart-define-from-file=config/vhs.local.json) fi flutter build apk "${BUILD_ARGS[@]}" # Pfad zur erzeugten APK BUILT_APK="build/app/outputs/flutter-apk/app-release.apk" if [[ ! -f "$BUILT_APK" ]]; then echo "Fehler: Erwartete APK nicht gefunden: $BUILT_APK" >&2 exit 1 fi # Ausgabeverzeichnis OUTPUT_DIR="build/releases" mkdir -p "$OUTPUT_DIR" cp "$BUILT_APK" "$OUTPUT_DIR/$APK_NAME" echo echo "Fertig: $OUTPUT_DIR/$APK_NAME"