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