#!/bin/bash # build-android.sh # Author: Matthew Raymer # Description: Android build script for TimeSafari application # This script handles the complete Android build process including cleanup, # web build, Capacitor build, Gradle build, and Android Studio launch. # # Exit Codes: # 1 - Android cleanup failed # 2 - Web build failed # 3 - Capacitor build failed # 4 - Gradle clean failed # 5 - Gradle assemble failed # 6 - Capacitor sync failed # 7 - Asset generation failed # 8 - Android Studio launch failed # 9 - Resource check failed # Exit on any error set -e # Source common utilities source "$(dirname "$0")/common.sh" # Parse command line arguments parse_args "$@" # Print build header print_header "TimeSafari Android Build Process" log_info "Starting Android build process at $(date)" # Setup environment for Capacitor build setup_build_env "capacitor" # Setup application directories setup_app_directories # Load environment from .env file if it exists load_env_file ".env" # Step 1: Check and fix Android resources safe_execute "Checking Android resources" "$(dirname "$0")/check-android-resources.sh" || { log_warning "Resource check found issues, but continuing with build..." } # Step 2: Clean Android app safe_execute "Cleaning Android app" "npm run clean:android" || exit 1 # Step 3: Clean dist directory log_info "Cleaning dist directory..." clean_build_artifacts "dist" # Step 4: Build Capacitor version safe_execute "Building Capacitor version" "npm run build:capacitor" || exit 3 # Step 5: Clean Gradle build safe_execute "Cleaning Gradle build" "cd android && ./gradlew clean && cd .." || exit 4 # Step 6: Assemble debug build safe_execute "Assembling debug build" "cd android && ./gradlew assembleDebug && cd .." || exit 5 # Step 7: Sync with Capacitor safe_execute "Syncing with Capacitor" "npx cap sync android" || exit 6 # Step 8: Generate assets and open Android Studio safe_execute "Generating assets" "npx capacitor-assets generate --android" || exit 7 safe_execute "Opening Android Studio" "npx cap open android" || exit 8 # Print build summary log_success "Android build completed successfully!" print_footer "Android Build" # Exit with success exit 0