Created
June 26, 2025 06:54
-
-
Save AndroidPoet/bd17a8e2bb3c4c47faf4a248e98583fb to your computer and use it in GitHub Desktop.
remove_xcode.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Complete Xcode Removal Script | |
# This script removes ALL traces of Xcode from your Mac | |
# Run with: chmod +x remove_xcode.sh && ./remove_xcode.sh | |
set -e # Exit on any error | |
echo "π¨ COMPLETE XCODE REMOVAL SCRIPT π¨" | |
echo "This will remove ALL traces of Xcode from your Mac" | |
echo "Press CTRL+C to cancel, or ENTER to continue..." | |
read | |
# Function to safely remove files/directories | |
safe_remove() { | |
if [ -e "$1" ]; then | |
echo "Removing: $1" | |
sudo rm -rf "$1" | |
else | |
echo "Not found (skipping): $1" | |
fi | |
} | |
# Function to remove user files (no sudo needed) | |
safe_remove_user() { | |
if [ -e "$1" ]; then | |
echo "Removing: $1" | |
rm -rf "$1" | |
else | |
echo "Not found (skipping): $1" | |
fi | |
} | |
echo "" | |
echo "π₯ STEP 1: Removing Xcode Applications..." | |
safe_remove "/Applications/Xcode.app" | |
safe_remove "/Applications/Xcode-beta.app" | |
safe_remove "/Applications/Xcode*.app" | |
echo "" | |
echo "π₯ STEP 2: Removing Developer Tools..." | |
safe_remove "/Developer" | |
safe_remove "/Library/Developer/CommandLineTools" | |
safe_remove "/usr/share/xcode-select" | |
echo "" | |
echo "π₯ STEP 3: Removing User Xcode Data..." | |
safe_remove_user "$HOME/Library/Developer/Xcode" | |
safe_remove_user "$HOME/Library/Developer/CoreSimulator" | |
safe_remove_user "$HOME/Library/Developer/Documentation" | |
safe_remove_user "$HOME/Library/Developer/Shared" | |
safe_remove_user "$HOME/Library/Developer/Toolchains" | |
safe_remove_user "$HOME/Library/Developer/XCTestDevices" | |
safe_remove_user "$HOME/Library/Developer/iOS DeviceSupport" | |
safe_remove_user "$HOME/Library/Developer/watchOS DeviceSupport" | |
safe_remove_user "$HOME/Library/Developer/tvOS DeviceSupport" | |
echo "" | |
echo "π₯ STEP 4: Removing Xcode Caches..." | |
safe_remove_user "$HOME/Library/Caches/com.apple.dt.Xcode" | |
safe_remove_user "$HOME/Library/Caches/com.apple.dt.XcodeBuild" | |
safe_remove_user "$HOME/Library/Caches/com.apple.CoreSimulator" | |
safe_remove_user "$HOME/Library/Caches/org.llvm.clang" | |
safe_remove_user "$HOME/Library/Caches/org.llvm.clang.$(whoami)" | |
safe_remove "/Library/Caches/com.apple.dt.Xcode" | |
echo "" | |
echo "π₯ STEP 5: Removing Xcode Preferences..." | |
safe_remove_user "$HOME/Library/Preferences/com.apple.dt.Xcode.plist" | |
safe_remove_user "$HOME/Library/Preferences/com.apple.dt.XcodeBuild.plist" | |
safe_remove_user "$HOME/Library/Preferences/com.apple.CoreSimulator.plist" | |
safe_remove_user "$HOME/Library/Preferences/com.apple.dt.XCLanguageSupport.plist" | |
safe_remove "/Library/Preferences/com.apple.dt.Xcode.plist" | |
echo "" | |
echo "π₯ STEP 6: Removing Application Support..." | |
safe_remove_user "$HOME/Library/Application Support/Xcode" | |
safe_remove_user "$HOME/Library/Application Support/Developer" | |
safe_remove_user "$HOME/Library/Application Support/MobileSync" | |
echo "" | |
echo "π₯ STEP 7: Removing Saved States..." | |
safe_remove_user "$HOME/Library/Saved Application State/com.apple.dt.Xcode.savedState" | |
safe_remove_user "$HOME/Library/Saved Application State/com.apple.CoreSimulator.savedState" | |
echo "" | |
echo "π₯ STEP 8: Removing Logs..." | |
safe_remove_user "$HOME/Library/Logs/CoreSimulator" | |
safe_remove_user "$HOME/Library/Logs/DiagnosticReports/Xcode*" | |
safe_remove_user "$HOME/Library/Logs/DiagnosticReports/Simulator*" | |
echo "" | |
echo "π₯ STEP 9: Removing System Receipts..." | |
safe_remove "/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.bom" | |
safe_remove "/System/Library/Receipts/com.apple.pkg.XcodeSystemResources.plist" | |
safe_remove "/System/Library/Receipts/com.apple.pkg.CLTools_Executables.bom" | |
safe_remove "/System/Library/Receipts/com.apple.pkg.CLTools_Executables.plist" | |
safe_remove "/System/Library/Receipts/com.apple.pkg.DeveloperToolsCLI.bom" | |
safe_remove "/System/Library/Receipts/com.apple.pkg.DeveloperToolsCLI.plist" | |
echo "" | |
echo "π₯ STEP 10: Removing Additional Developer Folders..." | |
safe_remove "/private/var/db/xcode_select_link" | |
safe_remove "/var/db/xcode_select_link" | |
safe_remove_user "$HOME/.lldb" | |
safe_remove_user "$HOME/.CFUserTextEncoding" | |
echo "" | |
echo "π₯ STEP 11: Removing iOS Simulators completely..." | |
safe_remove_user "$HOME/Library/Developer/CoreSimulator" | |
safe_remove_user "$HOME/Library/Logs/CoreSimulator" | |
safe_remove_user "$HOME/Library/Saved Application State/com.apple.iphonesimulator.savedState" | |
echo "" | |
echo "π₯ STEP 12: Removing Derived Data..." | |
safe_remove_user "$HOME/Library/Developer/Xcode/DerivedData" | |
echo "" | |
echo "π₯ STEP 13: Removing Archives..." | |
safe_remove_user "$HOME/Library/Developer/Xcode/Archives" | |
echo "" | |
echo "π₯ STEP 14: Removing UserData..." | |
safe_remove_user "$HOME/Library/Developer/Xcode/UserData" | |
echo "" | |
echo "π₯ STEP 15: Removing Swift Package Manager..." | |
safe_remove_user "$HOME/Library/org.swift.swiftpm" | |
safe_remove_user "$HOME/Library/Caches/org.swift.swiftpm" | |
echo "" | |
echo "π₯ STEP 16: Resetting xcode-select..." | |
echo "Resetting xcode-select path..." | |
sudo xcode-select --reset 2>/dev/null || echo "xcode-select reset completed" | |
echo "" | |
echo "π₯ STEP 17: Removing from PATH (if manually added)..." | |
# Remove Xcode paths from common shell profiles | |
for file in "$HOME/.bashrc" "$HOME/.bash_profile" "$HOME/.zshrc" "$HOME/.profile"; do | |
if [ -f "$file" ]; then | |
echo "Checking $file for Xcode paths..." | |
# Create backup | |
cp "$file" "$file.backup_$(date +%Y%m%d_%H%M%S)" | |
# Remove Xcode-related PATH entries | |
sed -i '' '/\/Developer\//d' "$file" 2>/dev/null || true | |
sed -i '' '/Xcode/d' "$file" 2>/dev/null || true | |
fi | |
done | |
echo "" | |
echo "π₯ STEP 18: Removing Keychain entries..." | |
echo "Removing Xcode-related keychain entries..." | |
security delete-generic-password -s "Xcode" 2>/dev/null || true | |
security delete-generic-password -s "com.apple.dt.Xcode" 2>/dev/null || true | |
echo "" | |
echo "π₯ STEP 19: Clearing Launch Services..." | |
echo "Rebuilding Launch Services database..." | |
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user | |
echo "" | |
echo "π₯ STEP 20: Final cleanup..." | |
# Remove any remaining Xcode processes | |
sudo pkill -f Xcode 2>/dev/null || true | |
sudo pkill -f CoreSimulator 2>/dev/null || true | |
# Clear system caches | |
sudo dscacheutil -flushcache | |
sudo killall -HUP mDNSResponder 2>/dev/null || true | |
echo "" | |
echo "β VERIFICATION: Checking for remaining Xcode files..." | |
echo "" | |
# Check for remaining Xcode applications | |
echo "Checking Applications folder:" | |
ls -la /Applications/ | grep -i xcode || echo "β No Xcode apps found" | |
echo "" | |
echo "Checking for remaining Developer folders:" | |
ls -la /Library/Developer/ 2>/dev/null || echo "β No /Library/Developer found" | |
ls -la "$HOME/Library/Developer/" 2>/dev/null || echo "β No ~/Library/Developer found" | |
echo "" | |
echo "Checking xcode-select status:" | |
xcode-select -p 2>/dev/null || echo "β xcode-select path not set" | |
echo "" | |
echo "π COMPLETE! Xcode has been completely removed from your system." | |
echo "" | |
echo "πΎ Space freed up: Run 'df -h' to see available space" | |
echo "π Reboot recommended: Restart your Mac to complete the cleanup" | |
echo "" | |
echo "π To reinstall Xcode:" | |
echo " β’ Download from Mac App Store, or" | |
echo " β’ Download from https://developer.apple.com/download/" | |
echo "" | |
echo "β οΈ Note: Your shell profile backups are saved with timestamp suffixes" | |
echo " Check ~/.bashrc.backup_*, ~/.zshrc.backup_* etc. if needed" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment