126 lines
4.6 KiB
Bash
126 lines
4.6 KiB
Bash
|
|
#!/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
|