본문 바로가기
iOS/설명

[iOS] Xcode 저장공간

by Sky Titan 2022. 8. 17.
728x90

 

 

Xcode 저장공간 이해 및 관리

해당 글은 Understanding and Managing Xcode Space 글을 보고 정리한 글입니다.

imjhk03.github.io

 

Understanding and Managing Xcode Space

Learn how to free up space hogged by Xcode in caches, derived data, archives and simulators!

www.raywenderlich.com

 

 Xcode는 단순한 text editor 이상의, IDE (Integrated Development Environment)이다.

 iOS 개발에 IDE를 사용함으로써, 얻는 장점으로는 프로젝트 빌드, debugging, code-sign과 같은 과정들이 쉬워진다는 점이 있다.

 

 하지만 IDE에서 제공하는 모든 기능들은 Mac의 저장공간을 차지하게 된다. Xcode를 설치하는 것으로만 11GB정도의 용량을 차지하게 된다. 하지만 이 11GB바이트는 빙산의 일각일 뿐이고, Xcode는 저장공간을 많이 잡아먹기로 악명이 높다.

 

 Xcode는 크게 아래와 같은 것들에 의해서 사이즈가 늘어나게 된다.

  • Derived Data
  • Caches
  • Old archives
  • Unavailable Simulators
  • Device support files

 이것들은 단순히 저장공간을 잡아먹는 것을 넘어, 각종 버그와 compile 문제를 야기할 수 있다. 예를 들어, 앱을 빌드할 때 문제가 있으면 derived data나 Caches 폴더를 날리면 문제가 해결되기도 한다.

 하지만 Xcode의 아무 data나 날리면 문제가 생길 수 있기 때문에 주의해야한다.

 

Derived Data

~/Library/Developer/Xcode/DerivedData
  • finder에서 '이동' -> '폴더로 이동' 을 클릭 후 위의 경로를 입력하면 Derived Data폴더로 이동가능
  • Xcode는 프로젝트를 build하고 나온 build 파일들을 모두 해당 폴더에 저장한다.
  • ModuleCache.noindex
    • Xcode가 미리 컴파일해놓은 모듈들을 저장해놓는 역할을 하는 폴더
    • Xcode는 이 Cache된 모듈들을 project들 사이에서 공유하여 build 시간을 단축시킨다.
  • Derived Data를 지워야 하는 경우
    • Derived Data 안에 있는 모든 것은 삭제해도 안전한 것들이다.
    • 사실, 대부분의 compile문제들은 일반적으로 Derived Data만 삭제하면 해결이 된다.
    • 대신, 삭제하게 되면 그 다음 project 빌드 시엔 빌드 속도가 더 오래 걸리게 된다.
  • Derived Data 삭제하기
    • 가장 간단한건 전체 폴더를 finder에서 지우면 된다.
    • 다만 특정 프로젝트의 derived Data 지우고 싶을 땐 해당 폴더만 지우는 게 빌드 속도 측면에선 더 나을 수 있다.
    • Derived Data의 build 파일은 debug용 build 파일이고, archive된 release 버전의 파일들은 다른 곳에 저장되어 있다.

 

Archives

~/Library/Developer/Xcode/Archives
  • TestFlight 혹은 app store에 배포를 위해 app을 아카이브할 때마다, mac의 local 저장소에 archive파일이 저장이 된다.
    • 만약 중간에 지우지 않았다면 몇 년된 아카이브 파일이 존재할 수도 있다.
  • Archives 폴더로 들어가보면 날짜별로 폴더들이 정리되어있고 해당 폴더들 아래에 .xcarchive 파일들이 존재한다.
  • .xcarchive파일을 지우면 된다.
  • Archives를 지워야 하는 경우
    • Derived Data랑 다르게 Archives 폴더는 지워도 나중에 빌드하는 데 영향을 주지 않는다.
    • 만약 예전 버전의 archive 파일을 다시 release해야 된다면, 오래된 .xcarchive파일을 굳이 안 지우는게 나을 수도 있다.
    • 그리고 app을 debugging할 때 필요한 dSYM이라고 불리는 파일이 archive 내부에 존재하기 때문에 더 이상 해당 version의 앱이 필요없다고 판단될 때 지우는 게 좋다.

 

Simulator

xcrun simctl delete unavailable
  • Simulator의 앱을 설치하면 mac의 일부 저장공간을 사용하게 된다. 예를 들어, simulator도 사진을 저장할 수가 있고 사진 저장 시 mac의 저장공간을 사용하게 된다.
  • Simulator 실행 후, Device -> Erase All Content and Settings를 클릭하면 default content 데이터 외에 나머지 데이터가 지워지게 된다.
  • 이용불가능한 Simulator 지우기
    • Apple은 새로운 iPhone을 출시할 때마다, 새로운 Version의 Xcode와 iOS 또한 출시한다.
    • 새로운 버전의 iOS simulator 또한 출시되고, 오래된 버전의 simulator는 쓸모가 없어진다.
    • 쓸모 없어진 simulator들은 지우는 게 저장공간 관리하는데 도움이 된다.
    • Terminal.app에서 위의 명령어를 입력하면 사용불가능한 simulator들을 지우게 되는데, 결과창에 아무것도 뜨지 않는다면 정상적으로 삭제된 것이다.

 

Device Support

~/Library/Developer/Xcode/iOS DeviceSupport
  • Mac에 app을 설치하기 위해 물리적인 device를 연결할 때, Xcode는 device support라는 파일들을 만들어 낸다.
  • Xcode는 이 파일들을 이용해서, crash log 보기와 같은 개발자 기능을 지원한다.
  • Device Support파일들은 iOS 각 버전마다 존재한다.
    • iOS 14.1, 14.2, 14.2.1 과 같은 방식으로 존재함
  • Xcode는 이 파일들을 자동으로 삭제해주지 않지만, 수동으로 지우는 것은 문제가 되지 않는다.
    • Device를 연결할 때마다 Xcode가 자동으로 새로 device support파일을 생성해준다.
  • 해당 파일들의 용량은 몇 GB에 달하기 때문에 저장공간의 cleaning 시, 가장 최우선 시 되는 폴더이다.
  • watchOS나 tvOS 같은 경우에도 플랫폼 별로 비슷한 경로로 찾아들어가면 해당 폴더를 찾을 수 있다.

 

Caches

~/Library/Caches
  • cache는 data를 재계산할 필요없이 더 빠르게 프로그램을 실행할 수 있게 해주는 저장공간이다.
  • Cache는 임시로 저장되는 data이기 때문에 지워도 program에 문제가 되지 않고, 언제든지 재생성하게 된다.
    • 하지만 cache가 큰 경우엔, cache를 re-build할 때 delay가 생길 수 있다.
  • Xcode나 관련 tool들에 문제가 있을 때, caches폴더를 지우면 도움이 될 수도 있다.
  • 대부분의 Cache는 ~/Library/Caches에 저장되며 Xcode와 관련된 cache는 ~/Library/Caches/com.apple.dt.Xcode 에서 찾을 수 있다.

728x90

'iOS > 설명' 카테고리의 다른 글

[iOS] iOS Keychain  (0) 2022.08.20
[iOS] Keep Xcode version vs Use version on Disk  (0) 2022.08.20
[iOS] UIScrollView contentInsetAdjustmentBehavior  (0) 2022.08.02
[iOS] IPA 파일  (0) 2022.08.02
[iOS] Framework vs Library  (0) 2022.08.01

댓글