[React Native] 리액트 네이티브에서 iOS 빌드 실패 해결하기 (Feat. Derived Data)

부기·2023년 4월 13일
0
post-thumbnail

오류 개요

개발을 하다보면 수정사항이 반영이 잘 안된다거나 하는 상황에서 yarn ios로 재빌드를 하는 경우가 있다. 잘 빌드가 되면 다행인데, 가끔 빌드가 실패했다고 뜰 때가 있다.
보통 Xcode 내의 Derived Data라는 것을 지워주면 된다.

오류 내용

error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65.

해결 방법

> rm -rf ~/Library/Developer/Xcode/DerivedData

해결은 했는데, 이 Derived Data라는건 정확히 뭔지 궁금해서 찾아봤다. 느낌상 캐시 데이터 같았는데, 얼추 맞다.

Xcode 에서의 Derived Data 란?

Xcode 가 채택하고 있는 캐시 체계이고, iOS 앱을 빌드할 때 매번 처음부터 빌드하지 않도록 하면서 시간을 절약할 수 있게 해준다.

Derived Data 가 문제가 되는 이유는?

여러 빌드를 거치며, 에러가 발생하면 그것 또한 캐싱하기 때문에 현재 발생하고 있는 에러가 아닌 과거 에러를 포함하여 빌드할 수 있기 때문이다.

이러한 맥락에서 ~/Library/Developer/Xcode/DerivedData를 삭제한 후 다시 yarn ios를 통해 빌드하면, 기존 빌드 내용에 영향을 받지 않는 새 빌드를 수행할 수 있다.

여담으로 그렇다면 Derived Data는 정확히 어떤 항목들을 캐싱할까? 만약 개발 중에 빌드 에러가 난다면, 다음 항목들을 확인하고 간단하게 이 폴더를 지워서 해결할 수 있는 문제인지 짐작해보는 것도 좋을 것 같다.

  • Intermediate Build Results
    기존 빌드 결과를 캐싱한다. 에러가 발생한 빌드를 그대로 가져왔을 수 있다.
  • Generated Indexes
    프로젝트 내에서 검색, 빠른 탐색에 사용되는 인덱스를 캐싱한다.
  • Module Caches
    Xcode가 미리 컴파일된 모듈 파일(.pcm)을 캐싱한다. 개발하면서 중간에 npm이나 yarn 패키지를 새로 추가하거나 삭제했을 경우 기존에 컴파일된 모듈 캐시가 문제가 될 수 있다.
  • Logs
    로그를 캐싱한다.

참고자료

profile
도파민 중독 프론트엔드 개발자

0개의 댓글