요약
- DerivedData는 삭제해도 안전합니다. 다음 빌드 때 Xcode가 다시 만들며, 대가는 한 번의 느린 빌드와 인덱스 재생성뿐입니다.
- iOS DeviceSupport 폴더도 삭제해도 됩니다. 해당 OS 버전을 실행하는 기기를 다음에 연결하면 Xcode가 심볼을 다시 복사합니다.
- Xcode Archives는 무턱대고 지우지 마세요. 배포한 빌드의 충돌 보고서를 심볼화하는 데 필요한 dSYM 파일이 들어 있습니다.
- 시뮬레이터는 xcrun simctl delete unavailable로, 런타임은 xcrun simctl runtime delete로 제거하세요. 폴더를 직접 지우는 방법은 피하는 것이 좋습니다.
- 시뮬레이터 런타임은 보통 하나에 7–10GB이므로, 더 이상 테스트하지 않는 iOS 버전을 제거하는 것이 가장 큰 효과를 내는 경우가 많습니다.
Xcode 저장 공간을 안전하게 정리하는 방법
- Xcode와 Simulator 종료하기. Xcode와 Simulator 앱을 종료해, 정리할 폴더를 빌드나 인덱싱, 실행 중인 기기가 사용하지 않도록 합니다.
- DerivedData 삭제하기. Finder에서 ~/Library/Developer/Xcode/DerivedData를 열고 안의 내용을 휴지통으로 옮깁니다. 필요한 것은 다음 빌드 때 Xcode가 다시 만듭니다.
- 오래된 DeviceSupport 폴더 제거하기. ~/Library/Developer/Xcode/iOS DeviceSupport에서 더 이상 디버깅하지 않는 OS 버전과 기기의 폴더를 휴지통으로 옮깁니다.
- 사용할 수 없는 시뮬레이터 삭제하기. 터미널에서 xcrun simctl delete unavailable을 실행해 런타임이 더 이상 설치되어 있지 않은 시뮬레이터 기기를 제거합니다.
- 필요 없는 시뮬레이터 런타임 제거하기. xcrun simctl runtime list를 실행한 뒤, 더 이상 테스트하지 않는 런타임의 식별자를 넣어 xcrun simctl runtime delete를 실행합니다. Xcode › Settings › Components에서도 할 수 있습니다.
- Archives는 마지막에 검토하기. Window › Organizer › Archives를 열고, 사용자가 아직 실행할 수 있는 빌드의 아카이브는 모두 보관합니다. 오래된 아카이브는 다른 드라이브에 복사한 뒤 삭제하세요.
대부분은 안전합니다. DerivedData, iOS DeviceSupport, 테스트 기기 복제본, 미리보기용 시뮬레이터, Xcode 캐시는 삭제해도 됩니다. 필요할 때 Xcode가 다시 만들기 때문입니다. 시뮬레이터와 시뮬레이터 런타임도 제거할 수 있지만, Finder 대신 Apple의 simctl 도구를 사용하세요. 조심해서 다뤄야 할 폴더는 Archives 하나뿐입니다. 배포한 앱의 디버그 심볼이 들어 있기 때문입니다.
iOS 개발에 쓰는 Mac이라면 이 폴더들을 합쳐 수십 GB에 이르는 경우가 흔합니다. 각 폴더가 무엇인지, 그리고 가장 깔끔하게 제거하는 방법을 정리했습니다.
Xcode가 데이터를 저장하는 곳
거의 모든 데이터는 홈 폴더의 ~/Library/Developer 아래에 있습니다. 예외는 시뮬레이터 런타임으로, macOS가 관리하는 시스템 디스크 이미지입니다.
| 폴더 | 경로 | 삭제해도 안전한가? | 다시 생기나? |
|---|---|---|---|
| DerivedData | ~/Library/Developer/Xcode/DerivedData |
예 | 예, 다음 빌드 때 |
| Archives | ~/Library/Developer/Xcode/Archives |
먼저 검토 | 아니요 |
| iOS DeviceSupport | ~/Library/Developer/Xcode/iOS DeviceSupport |
예 | 예, 기기를 연결하면 |
| 시뮬레이터 기기 | ~/Library/Developer/CoreSimulator/Devices |
simctl 사용 |
Xcode에서 다시 생성 |
| 시뮬레이터 런타임 | /Library/Developer/CoreSimulator/Volumes |
simctl 사용 |
다시 다운로드 |
| 테스트 기기 복제본 | ~/Library/Developer/XCTestDevices |
예 | 예, 병렬 테스트 때 |
| SwiftUI 미리보기 | ~/Library/Developer/Xcode/UserData/Previews |
예 | 예, 미리보기를 실행하면 |
| 시뮬레이터 캐시 | ~/Library/Developer/CoreSimulator/Caches |
예 | 예 |
| Xcode 캐시 | ~/Library/Caches/com.apple.dt.Xcode |
예 | 예 |
바로 옆에 있는 watchOS DeviceSupport, tvOS DeviceSupport, visionOS DeviceSupport, macOS DeviceSupport 폴더에도 DeviceSupport와 같은 원칙이 적용됩니다.
DerivedData: 안전합니다, Xcode가 다시 만듭니다
DerivedData에는 중간 빌드 결과물, 소스 인덱스, 빌드 로그, 모듈 캐시가 프로젝트마다 하위 폴더 하나씩 들어 있습니다. 지워도 코드는 전혀 건드리지 않습니다. 대가는 시간입니다. 각 프로젝트의 다음 빌드는 처음부터 다시 시작하고, 코드 완성이 완전히 돌아오기 전에 Xcode가 인덱스를 다시 만듭니다.
먼저 Xcode를 종료한 다음, 안의 내용을 휴지통으로 옮기세요.
open ~/Library/Developer/Xcode/DerivedData
프로젝트 하나만 정리하려면 해당 하위 폴더(프로젝트 이름 뒤에 임의의 문자열이 붙은 폴더)만 지우면 됩니다. Xcode의 Product › Clean Build Folder는 빌드 결과물을 제거하지만 보통 인덱스는 남겨 두므로 확보되는 공간이 더 적습니다. 위치는 Xcode › Settings › Locations에서 확인하거나 바꿀 수 있습니다.
Archives: 배포한 빌드는 보관하세요
각 .xcarchive는 Product › Archive로 만든 서명된 빌드이며, 앱의 dSYM 파일을 포함합니다. Xcode는 이 파일로 충돌 보고서에 심볼 이름을 추가합니다. 일치하는 dSYM이 없으면 해당 빌드의 충돌 보고서에는 함수 이름 대신 메모리 주소만 표시됩니다. 서드파티 충돌 보고 도구도 같은 파일이 필요합니다.
그러니 폴더를 통째로 비우지 말고 아카이브를 하나씩 검토하세요. Window › Organizer › Archives에서 오래된 내부 테스트 빌드처럼 더 이상 아무도 실행하지 않는 빌드를 삭제합니다. App Store나 TestFlight에 아직 올라가 있는 버전은 아카이브를 보관하거나, Mac에서 지우기 전에 .xcarchive 번들을 외장 드라이브에 복사해 두세요.
iOS DeviceSupport: 안전합니다, 필요하면 다시 복사됩니다
iPhone, iPad, Apple Watch, Apple TV, Vision Pro를 개발용으로 연결하면, Xcode는 Mac에서 디버깅과 심볼화를 할 수 있도록 그 기기의 시스템 심볼을 복사합니다. 최근 Xcode는 iPhone15,5 27.0.1 (24A446)처럼 기기 모델, OS 버전, 빌드 번호로 폴더 이름을 짓고, 폴더 하나가 몇 GB에 이르는 경우가 많습니다.
디버깅하는 기기의 iOS를 업데이트할 때마다 새 폴더가 추가되지만, Xcode는 오래된 폴더를 지우지 않습니다. 더 이상 사용하지 않는 OS 버전의 폴더는 휴지통으로 옮겨도 안전합니다. 아직 필요한 폴더를 지웠더라도 다음에 그 기기를 연결하면 Xcode가 다시 복사합니다. 몇 분 정도 걸립니다.
시뮬레이터: 기기와 런타임은 다릅니다
시뮬레이터 런타임은 iOS 27.1 같은 OS 버전 하나의 전체 시스템 이미지로, 보통 7–10GB입니다. 시뮬레이터 기기는 작은 구성 정보와 그 기기만의 데이터(설치한 앱, 사진, 설정)입니다. 여러 기기가 런타임 하나를 공유할 수 있으므로, 기기를 지우면 그 데이터만 확보되고 런타임을 지우면 큰 이미지가 확보됩니다.
시뮬레이터 기기 제거하기
기기 목록을 확인하고, 설치된 런타임과 더 이상 맞지 않는 기기를 제거합니다.
xcrun simctl list devices
xcrun simctl delete unavailable
delete unavailable은 현재 Xcode가 더 이상 지원하지 않는 기기, 대개 오래된 런타임에서 남은 기기를 제거합니다. 특정 기기 하나만 지우려면 목록에 나온 UDID를 넣어 xcrun simctl delete <UDID>를 실행하세요. Window › Devices and Simulators에서도 할 수 있습니다. 정말로 모든 시뮬레이터와 그 데이터를 지우려는 것이 아니라면 xcrun simctl delete all은 피하세요. 기기 삭제는 되돌릴 수 없지만, Xcode에서 언제든 새 기기를 만들 수 있습니다.
시뮬레이터 런타임 제거하기
xcrun simctl runtime list
xcrun simctl runtime delete <identifier>
runtime list는 설치된 이미지마다 버전, 식별자, 상태와 함께 전체 크기를 보여 줍니다. runtime delete는 식별자(각 줄의 UUID)를 받아 이미지를 마운트 해제하고 제거합니다. Xcode 27 기준으로 delete는 미리 확인하는 --dry-run과 --notUsedSinceDays <days>, --unusable, --outdated 옵션도 지원합니다. 이전 버전의 Xcode는 지원하는 옵션이 더 적으므로, xcrun simctl runtime을 실행해 사용 중인 버전에서 쓸 수 있는 옵션을 확인하세요.
Xcode에서는 Xcode › Settings › Components(Xcode 15에서는 Platforms)에서 런타임을 선택해 삭제할 수 있습니다. Apple의 추가 Xcode 구성 요소 다운로드 및 설치 안내에 터미널의 xcodebuild -downloadPlatform iOS를 포함해 런타임을 다시 받는 방법이 나와 있습니다.
/Library/Developer/CoreSimulator/Volumes나 /System/Library/AssetsV2에서 런타임 파일을 직접 지우지 마세요. 최근 Xcode는 런타임을 시스템이 관리하는 에셋으로 저장하므로, 파일을 직접 지우면 런타임이 등록된 채로 망가질 수 있습니다.
테스트 복제본, 미리보기, 시뮬레이터 캐시
- XCTestDevices: Xcode가 병렬 테스트용으로 만드는 복제본입니다. 테스트가 실행 중이 아닐 때 휴지통으로 옮겨도 안전합니다.
- SwiftUI 미리보기: Xcode는 미리보기를 별도의 시뮬레이터 세트에서 실행합니다.
xcrun simctl --set previews delete all로 제거할 수 있으며, 다음에 미리보기를 실행하면 Xcode가 다시 만듭니다. - CoreSimulator 캐시와 로그:
~/Library/Developer/CoreSimulator/Caches와~/Library/Logs/CoreSimulator는 Simulator 앱을 닫은 상태에서 비워도 안전합니다.
오래된 Xcode 버전, 툴체인, 다운로드 파일
/Applications(응용 프로그램 폴더)에 있는 Xcode는 하나하나가 큰 앱이라, 베타 버전이나 레거시 프로젝트용으로 남겨 둔 이전 버전이 빠르게 쌓입니다. 지우기 전에 명령줄 도구가 어떤 Xcode를 사용하는지 확인하세요.
xcode-select -p
이 경로가 가리키는 Xcode, 그리고 CI 작업이나 오래된 프로젝트가 아직 필요로 하는 버전은 남겨 두세요. ~/Downloads(다운로드 폴더)의 .xip 파일도 확인해 보세요. Xcode를 설치한 뒤에는 이 압축 파일이 필요 없습니다. swift.org에서 받은 추가 Swift 툴체인은 ~/Library/Developer/Toolchains에 있습니다. 프로젝트에서 선택해 쓰는 툴체인은 남겨 두세요.
~/Library/Caches/com.apple.dt.Xcode에는 Xcode 자체의 캐시가 있으며 필요할 때 다시 만들어집니다. Xcode를 오래 써 왔다면, 아주 오래된 Xcode가 ~/Library/Developer/Shared/Documentation/DocSets에 내려받은 오프라인 문서 세트가 남아 있을 수도 있습니다. 현재 버전은 이 파일을 사용하지 않습니다.
권장하는 정리 순서
- Xcode와 Simulator를 종료합니다.
- DerivedData, XCTestDevices, 미리보기용 시뮬레이터를 삭제합니다. 위험 부담이 없습니다.
xcrun simctl delete unavailable을 실행합니다.- 더 이상 대상으로 삼지 않는 OS 버전의 DeviceSupport 폴더와 시뮬레이터 런타임을 제거합니다.
- Archives와 오래된 Xcode는 마지막에 신중하게 검토합니다.
정리를 마친 뒤 휴지통을 비워야 공간이 실제로 돌아옵니다. 폴더 구성은 macOS 27 Golden Gate, 26 Tahoe, 15 Sequoia, 14 Sonoma에서 모두 같으며, 사용할 수 있는 simctl 옵션은 Xcode 버전에 따라 다릅니다.
MoreRoom이 도와드리는 방법
MoreRoom 무료 버전은 ~/Library/Developer를 스캔해 이 폴더들을 하나하나 인식하고, ‘안전하게 제거 가능’ 또는 ‘먼저 검토’ 배지와 함께 다시 생기는지 여부를 보여 줍니다. DerivedData, DeviceSupport, 테스트 복제본, 캐시는 한 번에 하나씩 휴지통으로 이동하며 실행 취소할 수 있습니다. 시뮬레이터 기기와 런타임에는 Apple의 공식 명령어인 xcrun simctl delete와 xcrun simctl runtime delete를 실행합니다. 이 명령어는 되돌릴 수 없으며, 앱에도 그렇게 표시됩니다. Archives에는 보관하라는 표시가 붙습니다.
MoreRoom Pro에는 여러 항목을 한 번에 정리하는 컬렉터, 필요한 공간에 맞춰 가장 안전한 조합을 고르는 목표 모드, 비활성 프로젝트를 위한 프로젝트 휴면 기능이 더해집니다. MoreRoom에서 아카이브를 외장 드라이브로 옮기는 기능은 출시 예정입니다. 지금은 직접 복사해 두세요.
자주 묻는 질문
DerivedData를 삭제하면 Xcode 프로젝트가 망가지나요?
아니요. DerivedData에는 Xcode가 생성하는 빌드 결과물, 인덱스, 로그만 들어 있습니다. 소스 코드와 프로젝트 설정은 프로젝트 폴더에 있습니다. Xcode가 데이터를 다시 만드는 동안 다음 빌드와 인덱싱이 조금 더 오래 걸릴 뿐입니다.
Xcode Archives를 삭제해도 안전한가요?
아무도 더 이상 실행하지 않는 빌드라면 괜찮습니다. 각 아카이브에는 충돌 보고서의 메모리 주소를 함수 이름으로 바꿔 주는 dSYM 파일이 들어 있습니다. 아직 사용자 손에 있는 모든 버전의 아카이브는 보관하거나, 먼저 다른 드라이브에 복사해 두세요.
iOS DeviceSupport가 왜 자꾸 다시 생기나요?
Xcode는 개발용으로 연결하는 기기마다, 기기 모델과 OS 버전별로 한 번씩 디버그 심볼을 복사합니다. 아직 사용하는 기기의 폴더를 지우면 다음에 그 기기를 연결할 때 Xcode가 다시 복사합니다.
CoreSimulator 폴더를 통째로 지워도 되나요?
권장하지 않습니다. 시뮬레이터 기기와 런타임은 CoreSimulator 서비스에 등록되어 있고, 런타임은 마운트된 시스템 디스크 이미지입니다. 관리 정보가 어긋나지 않도록 xcrun simctl delete와 xcrun simctl runtime delete, 또는 Xcode 설정을 사용하세요.
삭제한 시뮬레이터 런타임은 어떻게 되돌리나요?
Xcode › Settings › Components에서 다시 다운로드하거나 터미널에서 xcodebuild -downloadPlatform iOS를 실행하세요. 그런 다음 Window › Devices and Simulators에서 시뮬레이터 기기를 다시 만들 수 있습니다.