cyberhybridhub/setup_android_sdk.sh

77 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# Exit on any error
set -e
echo "=== Android SDK Command-Line Tools Installer ==="
# 1. Install Java (JDK 17) if not present
if ! command -v java &> /dev/null; then
echo "Java not found. Installing OpenJDK 17..."
sudo apt update
sudo apt install -y openjdk-17-jdk
else
echo "Java is already installed: $(java -version 2>&1 | head -n 1)"
fi
# 2. Define SDK Directory
SDK_DIR="$HOME/Android/Sdk"
mkdir -p "$SDK_DIR/cmdline-tools"
# 3. Download and Extract Command Line Tools
ZIP_URL="https://dl.google.com/android/repository/commandlinetools-linux-14742923_latest.zip"
TMP_ZIP="/tmp/commandlinetools.zip"
TMP_EXTRACT="/tmp/cmdline-tools-extract"
echo "Downloading Android Command-Line Tools..."
curl -L "$ZIP_URL" -o "$TMP_ZIP"
echo "Extracting tools..."
mkdir -p "$TMP_EXTRACT"
unzip -q "$TMP_ZIP" -d "$TMP_EXTRACT"
# Create the correct directory structure: cmdline-tools/latest/...
echo "Configuring directory structure..."
mkdir -p "$SDK_DIR/cmdline-tools/latest"
# Move files from the nested cmdline-tools folder in the zip
cp -r "$TMP_EXTRACT"/cmdline-tools/* "$SDK_DIR/cmdline-tools/latest/"
# Cleanup temp files
rm -rf "$TMP_ZIP" "$TMP_EXTRACT"
echo "Command line tools successfully installed to $SDK_DIR/cmdline-tools/latest"
# 4. Set Environment Variables for current session
export ANDROID_HOME="$SDK_DIR"
export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools"
# 5. Install SDK Components
echo "Installing platform-tools, build-tools, and platform-36..."
# We pass "yes" to accept license prompts during sdkmanager installs
yes | sdkmanager --licenses || true
sdkmanager "platform-tools" "build-tools;28.0.3" "build-tools;35.0.0" "build-tools;36.0.0" "platforms;android-35" "platforms;android-36"
# 6. Configure Flutter
echo "Configuring Flutter to use the new Android SDK and JDK 17..."
flutter config --android-sdk "$SDK_DIR"
flutter config --jdk-dir "/usr/lib/jvm/java-17-openjdk-amd64"
# 7. Accept Licenses
echo "Accepting licenses with Flutter..."
flutter doctor --android-licenses
# 8. Append environment variables to ~/.bashrc if not already present
if ! grep -q "ANDROID_HOME" "$HOME/.bashrc"; then
echo "Appending ANDROID_HOME to ~/.bashrc..."
cat << 'EOF' >> "$HOME/.bashrc"
# Android SDK
export ANDROID_HOME="$HOME/Android/Sdk"
export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools"
EOF
echo "Added to ~/.bashrc. Please run 'source ~/.bashrc' or restart your terminal after this script finishes."
fi
echo "=== Setup Complete! ==="
flutter doctor