77 lines
2.5 KiB
Bash
Executable File
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
|