#!/bin/bash # Complete Android APK Build Script # Downloads Android SDK and builds SCAR Chat APK set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$SCRIPT_DIR" SDK_DIR="${ANDROID_HOME:-$HOME/.android-scar-sdk}" echo "╔════════════════════════════════════════════════════════════════╗" echo "║ SCAR Chat Android APK Builder ║" echo "╚════════════════════════════════════════════════════════════════╝" echo "" # Step 1: Check Java echo "[1/5] Checking Java installation..." if ! command -v javac &> /dev/null; then echo "Error: Java compiler (javac) not found" echo "Please install Java JDK 11 or later" exit 1 fi JAVA_VERSION=$(javac -version 2>&1 | head -1) echo "✓ Found: $JAVA_VERSION" echo "" # Step 2: Download Android SDK echo "[2/5] Setting up Android SDK..." if [ ! -d "$SDK_DIR" ]; then echo "Downloading Android command-line tools (~300 MB)..." mkdir -p "$SDK_DIR/temp" cd "$SDK_DIR/temp" if ! wget -q -O sdk-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip; then echo "Error: Could not download SDK tools" echo "Check internet connection and try again" exit 1 fi echo "Extracting..." unzip -q sdk-tools.zip mv cmdline-tools latest rm -f sdk-tools.zip cd "$SDK_DIR" mv temp/latest . rm -rf temp fi echo "✓ Android SDK tools ready at: $SDK_DIR" echo "" # Step 3: Install required SDK components echo "[3/5] Installing SDK components..." export ANDROID_HOME="$SDK_DIR" export PATH="$ANDROID_HOME/latest/bin:$PATH" # Accept licenses mkdir -p "$ANDROID_HOME/licenses" echo -e "\n24333f8a63b6825ea9c5514f83c2829b004d1fee" > "$ANDROID_HOME/licenses/android-sdk-license" # Install packages echo "Installing platform-tools..." echo "y" | sdkmanager "platform-tools" 2>&1 | grep -v "^$" | tail -3 echo "Installing Android SDK API 34..." echo "y" | sdkmanager "platforms;android-34" 2>&1 | grep -v "^$" | tail -3 echo "Installing build tools..." echo "y" | sdkmanager "build-tools;34.0.0" 2>&1 | grep -v "^$" | tail -3 echo "✓ SDK components installed" echo "" # Step 4: Create local.properties echo "[4/5] Configuring project..." cat > "$PROJECT_DIR/local.properties" << EOF sdk.dir=$SDK_DIR EOF echo "✓ Project configured" echo "" # Step 5: Build APK echo "[5/5] Building APK..." cd "$PROJECT_DIR" export JAVA_HOME="/opt/openjdk-bin-21" export PATH="$JAVA_HOME/bin:$PATH" export ANDROID_HOME="$SDK_DIR" ./gradlew build --no-daemon 2>&1 | tee build.log if [ $? -eq 0 ]; then echo "" echo "╔════════════════════════════════════════════════════════════════╗" echo "║ BUILD SUCCESSFUL! ✅ ║" echo "╚════════════════════════════════════════════════════════════════╝" echo "" echo "Generated APK files:" echo "" if [ -f "app/build/outputs/apk/debug/app-debug.apk" ]; then DEBUG_SIZE=$(ls -lh app/build/outputs/apk/debug/app-debug.apk | awk '{print $5}') echo " Debug APK: app/build/outputs/apk/debug/app-debug.apk ($DEBUG_SIZE)" fi if [ -f "app/build/outputs/apk/release/app-release.apk" ]; then RELEASE_SIZE=$(ls -lh app/build/outputs/apk/release/app-release.apk | awk '{print $5}') echo " Release APK: app/build/outputs/apk/release/app-release.apk ($RELEASE_SIZE)" fi echo "" echo "To install on device:" echo " adb install -r app/build/outputs/apk/debug/app-debug.apk" echo "" echo "To run on emulator:" echo " ./gradlew installDebug" echo "" else echo "" echo "╔════════════════════════════════════════════════════════════════╗" echo "║ BUILD FAILED ❌ ║" echo "╚════════════════════════════════════════════════════════════════╝" echo "" echo "Check build.log for details" exit 1 fi