Skip to content

Instantly share code, notes, and snippets.

@HereOrCode
Created April 7, 2026 15:18
Show Gist options
  • Select an option

  • Save HereOrCode/a391021e6d6afaace20ab27493983be4 to your computer and use it in GitHub Desktop.

Select an option

Save HereOrCode/a391021e6d6afaace20ab27493983be4 to your computer and use it in GitHub Desktop.
Completely remove Android Studio, SDK, emulators, Gradle caches, etc.
#!/bin/bash
#
# Completely remove Android Studio, SDK, emulators, Gradle caches, etc.
# ⚠️ This operation is irreversible! Back up important projects before running.
#
# Usage: chmod +x cleanup_android_en.sh && ./cleanup_android_en.sh
#
set -euo pipefail
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
echo -e "${RED}╔══════════════════════════════════════════════════╗${NC}"
echo -e "${RED}║ ⚠️ Android Studio Full Uninstall Script (macOS) ║${NC}"
echo -e "${RED}║ This will delete: ║${NC}"
echo -e "${RED}║ - Android Studio application ║${NC}"
echo -e "${RED}║ - Android SDK / NDK / CMake ║${NC}"
echo -e "${RED}║ - AVD emulator images ║${NC}"
echo -e "${RED}║ - Gradle caches and daemons ║${NC}"
echo -e "${RED}║ - Kotlin / Maven / Google caches ║${NC}"
echo -e "${RED}║ - Android Studio config/preferences/plugins/logs║${NC}"
echo -e "${RED}╚══════════════════════════════════════════════════╝${NC}"
echo ""
# ---------- Calculate disk usage ----------
echo -e "${YELLOW}Calculating disk usage...${NC}"
dirs_to_check=(
"/Applications/Android Studio.app"
"$HOME/Library/Android"
"$HOME/.android"
"$HOME/.gradle"
"$HOME/Library/Caches/Google/AndroidStudio*"
"$HOME/Library/Application Support/Google/AndroidStudio*"
"$HOME/Library/Preferences/com.google.android.*"
"$HOME/Library/Preferences/com.android.*"
"$HOME/Library/Logs/Google/AndroidStudio*"
"$HOME/Library/Caches/com.google.android.*"
"$HOME/.konan"
"$HOME/.m2/repository/com/android"
"$HOME/.m2/repository/com/google/android"
"$HOME/.m2/repository/io/github/jamaismagic"
"$HOME/.m2/repository/org/jetbrains/kotlin"
"$HOME/.m2/repository/org/jetbrains/compose"
"$HOME/.m2/repository/androidx"
)
total_bytes=0
for pattern in "${dirs_to_check[@]}"; do
# shellcheck disable=SC2086
for d in $pattern; do
if [ -e "$d" ]; then
size=$(du -sk "$d" 2>/dev/null | awk '{print $1}')
size_mb=$((size / 1024))
printf " %-60s %s MB\n" "$d" "$size_mb"
total_bytes=$((total_bytes + size))
fi
done
done
total_gb=$(echo "scale=2; $total_bytes / 1048576" | bc 2>/dev/null || echo "$((total_bytes / 1048576))")
echo ""
echo -e "${YELLOW}Estimated space to free: ${RED}~${total_gb} GB${NC}"
echo ""
# ---------- Confirm ----------
read -rp "$(echo -e ${RED}Delete everything listed above? This cannot be undone!${NC} [y/N]: )" confirm
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
echo "Cancelled."
exit 0
fi
echo ""
# ---------- 1. Stop related processes ----------
echo -e "${GREEN}[1/8] Stopping Android Studio and Gradle daemons...${NC}"
if command -v gradle &>/dev/null; then
gradle --stop 2>/dev/null || true
fi
pids=$(pgrep -f "GradleDaemon" 2>/dev/null || true)
if [ -n "$pids" ]; then
echo "$pids" | xargs kill -9 2>/dev/null || true
fi
osascript -e 'quit app "Android Studio"' 2>/dev/null || true
sleep 2
pids=$(pgrep -f "Android Studio" 2>/dev/null || true)
if [ -n "$pids" ]; then
echo "$pids" | xargs kill -9 2>/dev/null || true
fi
pids=$(pgrep -f "qemu-system" 2>/dev/null || true)
if [ -n "$pids" ]; then
echo "$pids" | xargs kill -9 2>/dev/null || true
fi
pids=$(pgrep -f "emulator" 2>/dev/null || true)
if [ -n "$pids" ]; then
echo "$pids" | xargs kill -9 2>/dev/null || true
fi
pids=$(pgrep -f "adb" 2>/dev/null || true)
if [ -n "$pids" ]; then
echo "$pids" | xargs kill -9 2>/dev/null || true
fi
# ---------- 2. Remove Android Studio application ----------
echo -e "${GREEN}[2/8] Removing Android Studio application...${NC}"
rm -rf "/Applications/Android Studio.app"
rm -rf "/Applications/Android Studio Preview.app"
# ---------- 3. Remove Android SDK / NDK / AVD ----------
echo -e "${GREEN}[3/8] Removing Android SDK, NDK, emulator images...${NC}"
rm -rf "$HOME/Library/Android" # SDK, NDK, cmake, emulator system images
rm -rf "$HOME/.android" # AVD images, adb keys, debug keystore
# ---------- 4. Remove Gradle caches ----------
echo -e "${GREEN}[4/8] Removing Gradle caches (~/.gradle)...${NC}"
rm -rf "$HOME/.gradle"
# ---------- 5. Remove Android Studio config and caches ----------
echo -e "${GREEN}[5/8] Removing Android Studio config, caches, logs...${NC}"
# New paths (Arctic Fox+)
rm -rf "$HOME/Library/Application Support/Google/AndroidStudio"*
rm -rf "$HOME/Library/Caches/Google/AndroidStudio"*
rm -rf "$HOME/Library/Logs/Google/AndroidStudio"*
# Legacy paths (4.x and earlier)
rm -rf "$HOME/Library/Application Support/AndroidStudio"*
rm -rf "$HOME/Library/Caches/AndroidStudio"*
rm -rf "$HOME/Library/Logs/AndroidStudio"*
# Preferences
rm -f "$HOME/Library/Preferences/com.google.android.studio.plist"
rm -f "$HOME/Library/Preferences/com.google.android.studio"*
rm -f "$HOME/Library/Preferences/com.android.tools"*
# Saved Application State
rm -rf "$HOME/Library/Saved Application State/com.google.android.studio.savedState"
# Caches
rm -rf "$HOME/Library/Caches/com.google.android.studio"*
# ---------- 6. Remove Kotlin/Native and Maven Android caches ----------
echo -e "${GREEN}[6/8] Removing Kotlin/Native and Maven Android caches...${NC}"
rm -rf "$HOME/.konan"
# Only remove Android-related maven caches, preserving others
rm -rf "$HOME/.m2/repository/com/android"
rm -rf "$HOME/.m2/repository/com/google/android"
rm -rf "$HOME/.m2/repository/io/github/jamaismagic"
rm -rf "$HOME/.m2/repository/org/jetbrains/kotlin"
rm -rf "$HOME/.m2/repository/org/jetbrains/compose"
rm -rf "$HOME/.m2/repository/androidx"
# ---------- 7. Remove project build caches ----------
echo -e "${GREEN}[7/8] Cleaning current project build caches...${NC}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
if [ -d "$PROJECT_DIR/app" ]; then
echo " Cleaning project: $PROJECT_DIR"
rm -rf "$PROJECT_DIR/.gradle"
rm -rf "$PROJECT_DIR/build"
rm -rf "$PROJECT_DIR/app/build"
rm -rf "$PROJECT_DIR/local.properties"
fi
# ---------- 8. Uninstall Homebrew Gradle (optional) ----------
echo -e "${GREEN}[8/8] Checking Homebrew Gradle...${NC}"
if command -v brew &>/dev/null && brew list gradle &>/dev/null 2>&1; then
read -rp "$(echo -e ${YELLOW}Uninstall Gradle installed via Homebrew?${NC} [y/N]: )" remove_gradle
if [[ "$remove_gradle" == "y" || "$remove_gradle" == "Y" ]]; then
brew uninstall gradle
echo " Gradle uninstalled"
fi
fi
# ---------- Done ----------
echo ""
echo -e "${GREEN}╔══════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ ✅ Cleanup complete! ║${NC}"
echo -e "${GREEN}║ Freed approximately ~${total_gb} GB of disk space ║${NC}"
echo -e "${GREEN}║ ║${NC}"
echo -e "${GREEN}║ Removed: ║${NC}"
echo -e "${GREEN}║ • Android Studio application ║${NC}"
echo -e "${GREEN}║ • Android SDK / NDK / CMake ║${NC}"
echo -e "${GREEN}║ • AVD emulator images ║${NC}"
echo -e "${GREEN}║ • Gradle caches and config ║${NC}"
echo -e "${GREEN}║ • Android Studio preferences/logs/caches ║${NC}"
echo -e "${GREEN}║ • Kotlin/Native and Maven Android caches ║${NC}"
echo -e "${GREEN}╚══════════════════════════════════════════════════╝${NC}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment