모든 iOS, macOS, watchOS 및 VisionOS 개발자는 똑같이 반복되는 악몽을 공유합니다. Mac에 남은 디스크 공간이 5GB 미만이라는 경고 메시지가 나타나는 것입니다. 게임이나 영화를 다운로드하지 않았는데 512GB SSD는 어디로 갔나요? 95%의 경우, 원인은 Xcode DerivedData 및 빌드 캐시입니다.

활성 컴파일 중에 Xcode는 중간 개체 파일, 미리 컴파일된 헤더, 인덱싱 기호 테이블 및 컴파일러 모듈 캐시를 생성합니다. 수개월에 걸쳐 다양한 분기와 종속성을 구축하는 동안 이러한 폴더는 절대 자체 정리되지 않습니다. 50GB~100GB의 개발자 디스크 공간을 깨끗하고 안전하게 확보하는 방법은 다음과 같습니다.

Xcode DerivedData 및 빌드 캐시 최적화
Apple Silicon에서 중간 빌드 제품 및 기호 그래프를 안전하게 삭제합니다.

Xcode가 대용량 디스크 캐시를 숨기는 곳

Xcode는 임시 빌드 제품과 지원 파일을 5개의 기본 디렉터리에 배포합니다:

  • DerivedData(~/Library/Developer/Xcode/DerivedData): 중간 개체 파일, 인덱스 데이터베이스 및 빌드 제품. 20GB~60GB를 소비합니다.
  • iOS DeviceSupport(~/Library/Developer/Xcode/iOS DeviceSupport): 지금까지 연결한 모든 실제 iPhone 또는 iPad의 기호. iOS 버전당 5GB~15GB를 소비합니다.
  • 아카이브(~/Library/Developer/Xcode/Archives): 프로덕션 App Store 릴리스를 생성할 때 저장된 이전 .xcarchive 빌드. 1년에 걸쳐 40GB 이상으로 확장 가능.
  • Swift 패키지 관리자 캐시(~/Library/Caches/org.swift.swiftpm): SPM 종속성을 위해 복제된 git 저장소 및 컴파일된 체크아웃 바이너리.
  • XCTestDevices(~/Library/Developer/XCTestDevices): 병렬 테스트 실행 중에 생성된 분리된 임시 시뮬레이터 클론.

파생 데이터를 삭제해도 안전한가요?

그렇습니다. DerivedData는 100% 재생 가능합니다. 다음에 프로젝트를 열고 Cmd+B를 누르면 Xcode가 코드의 색인을 다시 생성하고 필요한 개체 파일을 컴파일합니다. 유일한 비용은 첫 실행 시 초기 빌드 시간이 약간 길어진다는 것입니다.

터미널과 MagicMacCleaner를 통한 수동 삭제

Xcode를 종료하고 rm -rf ~/Library/Developer/Xcode/DerivedData/*를 실행하여 DerivedData를 수동으로 삭제할 수 있습니다. 하지만 수동으로 터미널을 삭제하면 현재 작업 중인 프로젝트까지 포함하여 모든 프로젝트가 한 번에 지워집니다.

MagicMacCleaner의 전용 Xcode Deep Clean 모듈은 각 프로젝트 하위 폴더의 수정 날짜를 읽어 이 문제를 해결합니다. 한 번의 클릭으로 유휴 클라이언트와 레거시 저장소를 제거하면서 활성 프로젝트를 그대로 유지할 수 있습니다.

모바일 개발자 작업 흐름: 실제 테스트 iPhone에서 저장 공간 확보

Xcode 캐시, 시뮬레이터 런타임 및 빌드 컨테이너를 지워 Mac의 중요한 공간을 확보하는 반면, 실제 iOS 테스트 장치는 테스트 빌드, 충돌 아티팩트, 진단 화면 기록 및 QA 스크린샷으로 인해 빠르게 막히게 됩니다. 신속한 온디바이스 디버깅과 안정적인 배포를 위해서는 물리적 테스트 하드웨어를 간결하게 유지하는 것이 필수적입니다.

  • Clearly Smart Storage Cleaner: 기가바이트 규모의 버그 보고서 화면 녹화를 압축하고, 중복된 테스트 미디어를 감지하고, 개발 및 개인 iPhone에서 복잡한 연락처를 정리합니다.
  • Swipe Photo Cleaner: 손쉬운 스와이프-삭제 동작으로 수백 개의 UI 테스트 스크린샷과 데모 버스트를 빠르게 검토하고 제거합니다.

Apple 생태계 개발 팁: 테스트 기기 최적화

연결된 iOS 기기의 저장 공간이 부족하면 Xcode 무선 배포 시간 초과 및 LLDB 디버깅 오류가 발생할 수 있습니다. 정기적인 기기 내 미디어 정리로 알 수 없는 빌드 배포 오류를 방지합니다.