Files
car_rental_app/build_prod_apk.sh
T

60 lines
2.1 KiB
Bash
Executable File

#!/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)"