60 lines
2.1 KiB
Bash
Executable File
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)"
|