Xcode 용량 정리: DerivedData, DeviceSupport, 오래된 시뮬레이터 삭제하기
2026년 10월 13일 업데이트
Xcode DerivedData는 ~/Library/Developer/Xcode/DerivedData에 있고 지워도 안전해요. Xcode가 다음 빌드 때 다시 만드는 빌드 결과물, 인덱스, 로그만 들어 있거든요. Xcode를 종료하고 폴더를 지우면, 다음 빌드와 인덱싱이 좀 더 오래 걸릴 뿐이에요. iOS DeviceSupport와 시뮬레이터 캐시도 안전해요. 남겨 둬야 할 폴더는 Archives예요.
무료로 조회할 수 있는 macOS 메뉴 막대 앱 WTMemory로 결정하기 전에 이 폴더들과 용량을 볼 수 있어요. 자세한 내용은 끝부분에 있고, 여기 나오는 모든 방법은 터미널과 Finder만으로도 돼요.
맥에서 Xcode는 어디에 용량을 쓰나요?
거의 전부 ~/Library/Developer 아래에 있어요. 지우기 전에 먼저 재 보세요.
du -sh ~/Library/Developer/Xcode/* ~/Library/Developer/CoreSimulator/* 2>/dev/null | sort -h
최근 Xcode 버전이 설치하는 시뮬레이터 런타임은 홈 폴더 밖에서 시스템이 관리하기 때문에 위 명령에 포함되지 않아요. xcrun simctl runtime list로 확인하세요.
| 위치 | 내용 | 지워도 되나요? |
|---|---|---|
Xcode/DerivedData | 빌드 결과물, 인덱스, 모듈 캐시, 로그 | 네. 다음 빌드가 느려지고 인덱싱을 다시 해요. |
Xcode/iOS DeviceSupport (watchOS, tvOS, visionOS도) | 연결한 기기에서 복사한 심벌, OS 버전마다 폴더 하나 | 네. 그 버전의 기기를 연결하면 다시 복사돼요. |
CoreSimulator/Caches | 시뮬레이터 캐시 | 네. 필요할 때 다시 만들어져요. |
CoreSimulator/Devices | 각 시뮬레이터와 설치된 앱, 데이터 | rm 말고 simctl을 쓰세요. 시뮬레이터 안의 앱 데이터는 사라져요. |
| 시뮬레이터 런타임 | iOS, watchOS, tvOS, visionOS 시뮬레이터 OS 이미지 | 그 OS에서 더 이상 테스트하지 않는다면 네. 다시 내려받을 수 있어요. |
Xcode/Archives | 아카이브한 빌드와 dSYM | 보통은 아니요. 크래시를 해석할 때 필요해요. |
~/Library/Caches/com.apple.dt.Xcode | Xcode 앱 캐시 | 네, Xcode를 종료한 상태라면요. |
Xcode DerivedData는 어떻게 지우나요?
먼저 Xcode를 종료하세요. Xcode가 실행 중일 때 폴더를 지우면 인덱서와 빌드 시스템이 꼬일 수 있어요.
rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf는 영구 삭제예요. 되돌릴 수 있는 방법을 원한다면 open ~/Library/Developer/Xcode/DerivedData로 Finder에서 폴더를 열고 내용을 휴지통으로 드래그하세요. Xcode에서도 갈 수 있어요. Settings > Locations에 DerivedData 경로와 이를 여는 화살표가 있어요.
프로젝트 하나만 정리하려면 그 프로젝트 폴더만 지우세요. 폴더 이름은 프로젝트 이름에 해시가 붙은 형태예요. 예: MyApp-abcdefghij. 클린 빌드로도 안 없어지는 꼬인 인덱스, 유령 빌드 오류, "No such module" 오류를 고치는 전통적인 방법이에요.
잃는 것: 각 프로젝트의 다음 빌드가 전체 빌드가 되고, DerivedData에 받아 둔 Swift 패키지를 다시 가져오고, 인덱싱이 끝날 때까지 코드 자동 완성과 정의로 이동이 느려요. 소스 트리에는 아무 변화도 없어요.
Product > Clean Build Folder(Shift-Command-K)는 같은 게 아니에요. 현재 프로젝트의 빌드 결과물은 지우지만 인덱스, 다른 프로젝트의 폴더, 공유 모듈 캐시는 그대로 둬요.
iOS DeviceSupport를 지워도 안전한가요?
네. 디버깅하려고 iPhone이나 iPad를 연결하면 Xcode는 그 기기에서 앱을 디버깅하고 크래시 로그를 해석할 수 있도록 해당 iOS 버전의 심벌을 맥에 복사해요. 한 번이라도 디버깅한 iOS 버전마다 폴더가 하나씩 생기고, 각각 몇 GB가 될 수 있어요. 크기순으로 나열해 보세요.
du -sh ~/Library/Developer/Xcode/iOS\ DeviceSupport/* | sort -h
테스트 기기에서 더 이상 쓰지 않는 iOS 버전의 폴더를 지우세요. 지운 버전의 기기를 다시 연결하면 Xcode가 심벌을 다시 복사하고, 디버깅이 시작되기까지 몇 분 걸려요. watchOS DeviceSupport, tvOS DeviceSupport 등 형제 폴더도 마찬가지예요.
오래된 시뮬레이터는 어떻게 지우나요?
실행 중인 시뮬레이터를 종료한 다음, 런타임이 더 이상 설치되어 있지 않은 기기를 지우세요.
xcrun simctl shutdown all
xcrun simctl delete unavailable
delete unavailable은 현재 Xcode SDK로 실행할 수 없는 시뮬레이터만 지우기 때문에 안전한 첫 단계예요. 나머지를 보려면 xcrun simctl list devices를 실행하고 xcrun simctl delete <UDID>로 UDID를 지정해 하나씩 지우세요. xcrun simctl erase all은 모든 시뮬레이터를 지우지 않고 공장 초기 상태로 되돌려서 설치된 앱과 데이터를 비워요.
보통 런타임이 가장 커요. 목록을 보세요.
xcrun simctl runtime list
그다음 식별자로 하나를 지우거나, 기간 기준으로 정리하면 무엇이 지워지는지 미리 보세요.
xcrun simctl runtime delete <identifier>
xcrun simctl runtime delete --notUsedSinceDays 90 --dry-run
목록이 괜찮아 보이면 --dry-run을 빼고 실행하세요. Xcode에서는 Settings > Components(Xcode 15에서는 Platforms)에서 같은 일을 할 수 있어요. SwiftUI 프리뷰는 별도의 시뮬레이터 세트를 쓰는데, xcrun simctl --set previews delete all로 비울 수 있고 Xcode가 필요한 걸 다시 만들어요.
Xcode Archives는 지워야 하나요?
보통은 아니에요. ~/Library/Developer/Xcode/Archives의 각 아카이브에는 앱 빌드와 dSYM 파일이 들어 있어요. 바로 그 빌드에서 나온 크래시 리포트를 읽을 수 있는 스택 트레이스로 바꾸거나, 빌드를 다시 내보내거나 다시 업로드할 때 이 dSYM이 필요해요. 그 버전이 신경 쓰이는 어디에도 더 이상 설치되어 있지 않거나, 크래시 리포팅 서비스 등 다른 곳에 dSYM을 보관했을 때만 지우세요. 각 아카이브의 버전과 날짜를 먼저 볼 수 있도록 Window > Organizer > Archives에서 관리하세요.
Swift Package Manager와 오래된 Xcode 버전은요?
- SwiftPM 캐시(
~/Library/Caches/org.swift.swiftpm)는 필요할 때 다시 내려받아져요. 지우면 다음 패키지 resolve 때 네트워크 시간이 들어요. /Applications에 있는 오래된 Xcode(예:Xcode-15.4.app)가 단일 항목으로는 가장 큰 경우가 많아요. 지우기 전에 CI 스크립트나xcode-select경로가 그걸 가리키고 있지 않은지 확인하세요.~/Library/Developer안의 문서와 로그는 위 항목들에 비하면 작아요.du에서 크게 나오지 않는 한 그냥 두세요.
Xcode 용량이 왜 시스템 데이터로 표시되나요?
macOS 저장 공간 설정은 개발자 캐시, 시뮬레이터 런타임, 기타 라이브러리 데이터를 큰 범주로 묶어서 주로 개발자나 시스템 데이터로 표시하기 때문에, 그 수치가 특정 폴더 하나와 맞는 경우는 드물어요. 위처럼 du로 재면 공간이 정확히 어디 있는지 알 수 있어요. 그 범주의 나머지는 시스템 데이터 가이드를 보세요.
메뉴 막대에서 Xcode 캐시 검토하기
WTMemory는 Xcode DerivedData, iOS DeviceSupport, 시뮬레이터 캐시를 포함한 지원 위치를 스캔하고, 각 항목을 설명과 예상 용량과 함께 보여 줘요. 결정하기 전에 어떤 항목이든 Finder에서 볼 수 있어요. 조회는 무료예요.
Pro에서는 항목을 하나씩 고르고, 확인 창에서 어떤 영향이 있는지 읽은 다음, WTMemory가 휴지통으로 옮겨요. 아무것도 자동으로 선택되지 않고 아무것도 영구 삭제되지 않아요. 휴지통은 직접 비우세요. Archives는 정리 대상에서 제외되니 dSYM은 그대로 남아요. 실행 중인 도구가 캐시 파일을 열어 둘 수 있으니 먼저 Xcode와 시뮬레이터를 종료하세요. WTMemory는 Apple Silicon과 Intel의 macOS 12 이상에서 돌아가고, Pro는 $9 USD 일회성 결제로 맥 3대까지 쓸 수 있으며 7일 체험판이 있어요.
자주 묻는 질문
Xcode DerivedData를 지워도 안전한가요?
네. DerivedData에는 Xcode가 다시 만드는 빌드 결과물, 인덱스, 모듈 캐시, 로그만 들어 있어요. 먼저 Xcode를 종료하세요. 대가는 첫 빌드가 느려지고 프로젝트마다 인덱싱을 다시 하는 것뿐이에요.
iOS DeviceSupport를 지워도 안전한가요?
네. 각 폴더에는 해당 iOS 버전이 설치된 기기에서 복사한 심벌이 들어 있어요. 그 버전의 기기를 다시 연결하면 Xcode가 심벌을 다시 복사하는데, 몇 분 정도 걸려요.
Xcode Archives를 지워야 하나요?
보통은 아니에요. Archives에는 출시한 빌드의 크래시 리포트를 해석하는 데 필요한 dSYM 파일이 들어 있어요. 그 빌드를 더 이상 쓰지 않거나 dSYM을 다른 곳에 보관했을 때만 지우세요.
오래된 iOS 시뮬레이터는 어떻게 지우나요?
xcrun simctl delete unavailable을 실행하면 런타임이 더 이상 설치되어 있지 않은 시뮬레이터가 지워져요. 런타임 전체는 xcrun simctl runtime delete로 지우거나 Xcode 설정의 Components 패널에서 지우세요.
Product > Clean Build Folder로도 같은 공간이 확보되나요?
아니요. Clean Build Folder는 현재 프로젝트의 빌드 결과물만 지워요. 그 프로젝트의 인덱스, 다른 프로젝트의 폴더, DerivedData의 공유 모듈 캐시는 그대로 남아요.