scar-chat/android_client/build-complete.sh

126 lines
4.6 KiB
Bash
Executable File

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