#!/usr/bin/env bash set -euo pipefail # ── Config ──────────────────────────────────────────────────────────────────── ENV_FILE="env/prod.json" OUTPUT_DIR="build/outputs" APK_SRC="build/app/outputs/flutter-apk/app-release.apk" APK_DEST="$OUTPUT_DIR/rentaldrivego-release.apk" LOCAL_PROPERTIES="android/local.properties" resolve_flutter() { if command -v flutter &>/dev/null; then command -v flutter return 0 fi if [[ -f "$LOCAL_PROPERTIES" ]]; then local sdk_path sdk_path="$(sed -n 's/^flutter\.sdk=//p' "$LOCAL_PROPERTIES" | head -n 1)" if [[ -n "$sdk_path" && -x "$sdk_path/bin/flutter" ]]; then echo "$sdk_path/bin/flutter" return 0 fi fi return 1 } # ── Checks ──────────────────────────────────────────────────────────────────── cd "$(dirname "$0")" if ! FLUTTER_BIN="$(resolve_flutter)"; then echo "❌ flutter not found in PATH or $LOCAL_PROPERTIES" exit 1 fi if [[ ! -f "$ENV_FILE" ]]; then echo "❌ $ENV_FILE not found — create it with production API URLs" exit 1 fi # ── Build ───────────────────────────────────────────────────────────────────── echo "▶ Cleaning previous build..." "$FLUTTER_BIN" clean echo "▶ Fetching dependencies..." "$FLUTTER_BIN" pub get echo "▶ Building release APK (production)..." "$FLUTTER_BIN" build apk --release --dart-define-from-file="$ENV_FILE" # ── Copy to output ──────────────────────────────────────────────────────────── mkdir -p "$OUTPUT_DIR" cp "$APK_SRC" "$APK_DEST" echo "" echo "✅ Build complete!" echo " APK → $APK_DEST" echo " Size: $(du -sh "$APK_DEST" | cut -f1)"