개발자를 위한 저장 공간 가이드

Xcode가 제 용량을 다 쓰고 있습니다

현역 맥에서 20~60GB가 여섯 폴더에 흩어져 있고, 그중 어느 것도 Xcode가 스스로 정리하지 않습니다. 각각의 역할과 지워도 되는지를 정리했습니다.

14일 무료 체험, 카드 필요 없음. 이후 3대에 15달러 한 번.

Xcode의 DerivedData와 기기 지원 폴더를 크기순으로 보여주는 Bytesweep

먼저 측정하기

명령 하나로 총량이 Xcode의 폴더별로 어떻게 나뉘는지 알 수 있어, 어디를 노려야 할지 정해집니다:

du -sh ~/Library/Developer/Xcode/* ~/Library/Developer/CoreSimulator 2>/dev/null | sort -h

여섯 폴더

DerivedData — 대개 가장 큼 · 지워도 안전

빌드 중간 산출물, 인덱스, 모듈 캐시. 프로젝트마다 폴더 하나씩이며, 오래전에 지운 프로젝트의 것까지 영원히 남습니다.

~/Library/Developer/Xcode/DerivedData

지우는 대가는 느린 빌드 한 번뿐입니다. Xcode가 이상하게 동작할 때의 표준 해결책이기도 해서, iOS 개발자라면 누구나 이 경로를 외우고 있습니다.

iOS DeviceSupport — 큼 · 지워도 안전

지금까지 연결한 모든 실기기에서 복사된 심볼 캐시로, iOS 빌드마다 폴더 하나씩입니다. 하나에 수 GB이며, 이제 없는 전화기의 것까지 쌓입니다.

~/Library/Developer/Xcode/iOS DeviceSupport

해당 iOS 버전의 기기를 다음에 연결할 때 Xcode가 다시 복사합니다. 첫 연결이 느려질 뿐 다른 대가는 없습니다.

CoreSimulator 기기 — 큼 · 대체로 안전

시뮬레이터 기기는 각자 파일 시스템을 가지며, 회수되는 일이 없습니다. 데이터베이스가 일관되게 유지되도록 폴더를 지우지 말고 Xcode 자체 명령을 쓰세요:

xcrun simctl delete unavailable

더 나아가려면 xcrun simctl delete all 로 모든 시뮬레이터 기기를 제거할 수 있습니다. 시뮬레이터 런타임 자체는 다음에서 관리합니다: Xcode → 설정 → 구성 요소.

Archives — 작지만 대체 불가 · 남길 것

지금까지 출시한 모든 빌드와 그 dSYM 디버그 심볼.

~/Library/Developer/Xcode/Archives

여기만은 건드리지 마세요. 출시한 빌드의 dSYM이 없으면 그 버전을 쓰는 사용자의 크래시 리포트를 심볼화할 수 없고, 스택 트레이스는 영원히 16진수 주소로 남습니다. 꼭 여기서 공간을 확보해야 한다면, 아직 사용자에게 있는 버전의 아카이브는 남겨두세요.

그리고 다음 iOS 출시 후에 또 한 번

DerivedData는 빌드한 날 돌아오고, DeviceSupport는 기기를 연결할 때마다 늘어납니다. 이것은 해결이 아니라 반복되는 잡일입니다. Bytesweep은 여섯 폴더를 한 번에 찾고, Archives는 정리 대상이 아니라 확인 대상으로 표시하며, 어떤 정리든 7일 동안 되돌립니다. 엉뚱한 프로젝트를 비운 날 그것이 중요해집니다.

Swift Package Manager 캐시 — 지워도 안전

복제된 의존성 저장소로, 필요할 때 다시 받아옵니다.

~/Library/Caches/org.swift.swiftpm

오래된 시뮬레이터 런타임과 오래된 Xcode — 주의해서

이전 Xcode.app만으로도 15GB이고 런타임이 몇 GB 더 있습니다. 옛 프로젝트를 위해 아직 필요한 버전은 남기고, 나머지는 Finder에서 지운 뒤 관련 런타임을 설정 → 구성 요소에서 제거하세요.

크기를 잡아 두는 두 가지 습관

DerivedData는 프로젝트 단위로 지우고, 통째로 지우지 말기

하위 폴더에는 프로젝트 이름이 붙어 있습니다. 폴더 전체를 비우면 지금 작업 중인 것까지 전부 다시 빌드해야 합니다. 작년에 끝난 프로젝트의 것만 비우면 대가가 전혀 없습니다.

iOS 출시마다 DeviceSupport 확인하기

연결하는 기기마다, iOS 빌드마다 폴더가 하나씩 늘어나므로 1년 내내 조용히 커집니다. 매년 9월에 2분만 쓰면 30GB가 되는 것을 막을 수 있습니다.

여섯 개를 한 번에 찾기

Bytesweep은 Xcode의 각 폴더를 이름으로 찾아 크기를 보여주고, Archives는 정리가 아니라 확인 대상으로 표시합니다. 비운 것은 모두 복원 지점으로 들어가므로 되돌리기는 7일 동안 한 번의 클릭입니다.

관련 페이지: Docker disk space · 맥 전체 목록

자주 묻는 질문

DerivedData를 지워도 안전한가요?

네. 이름 그대로 전부 소스에서 파생된 것입니다. 유일한 대가는 해당 프로젝트의 다음 빌드가 전체 빌드가 된다는 점입니다.

DeviceSupport를 지우면 아이폰 디버깅이 안 되나요?

아니요. 해당 iOS 버전의 기기를 다음에 연결할 때 Xcode가 심볼을 다시 복사합니다. 그 뒤 첫 연결이 몇 분 더 걸릴 뿐입니다.

Xcode 아카이브를 지워도 되나요?

지울 수는 있지만 먼저 생각해 보세요. 아카이브에는 출시한 빌드의 dSYM이 들어 있고, 그것이 없으면 그 버전의 크래시 리포트를 심볼화할 수 없습니다. 아직 사용자에게 있는 것은 남기고, 오래된 베타는 마음껏 지우세요.

Xcode.app 자체는 왜 그렇게 큰가요?

약 15GB입니다. 애플이 지원하는 모든 플랫폼용 툴체인, SDK, 시뮬레이터 런타임을 함께 담고 있기 때문입니다. 쓰지 않는 시뮬레이터 런타임은 Xcode → 설정 → 구성 요소에서 제거할 수 있지만, 앱 번들 자체는 어쩔 수 없습니다.

Xcode가 이 중 무엇이라도 자동으로 정리해 주나요?

아니요. 이 폴더들에는 크기 제한도 만료도 없습니다. 이 페이지가 존재하는 이유가 바로 그것입니다.