RSS DEV 커뮤니티
팔로우
모든 빌드에서 70+ iOS 패키지를 재컴파일하는 건너뛰세요
Expo SDK 56은 Expo 모듈에 대한 사전 컴파일된 XCFramework를 도입하여 iOS 클린 빌드 시간을 크게 개선합니다. 이전에는 모든 클린 빌드 시 React Native 코어, Expo 모듈 및 타사 라이브러리를 소스에서 다시 컴파일했습니다. 이제 앱은 이러한 사전 컴파일된 바이너리를 직접 연결하여 구성 없이 개발 및 EAS 빌드 시간을 대폭 단축합니다. 이 이니셔티브는 또한 레거시 CocoaPods 종속성 시스템에서 Apple의 최신 Swift Package Manager(SPM)로 전환하는 시작을 의미합니다.
사전 컴파일된 XCFramework는 사전 컴파일된 네이티브 라이브러리를 배포하기 위한 Apple의 형식으로, 중복되는 로컬 컴파일을 제거합니다. 이 업데이트는 오래된 CocoaPods에 대한 의존성과 네이티브 빌드의 느린 속도라는 두 가지 문제를 해결합니다. Ruby 기반의 레거시 인프라인 CocoaPods는 수명이 다해가고 있으므로 SPM으로의 전환은 미래를 대비하는 데 중요합니다. 컴파일 작업이 파이프라인의 더 앞쪽으로 이동하고 프레임워크가 한 번 컴파일되어 재사용되므로 특히 CI 및 대규모 프로젝트에서 느린 네이티브 빌드가 완화됩니다.
XCFramework의 엄격한 모듈성 요구 사항은 CocoaPods의 허용적인 환경과 대조적으로, 이를 구현하는 것은 기술적으로 어려웠습니다. 주요 어려움에는 불법 헤더 내보내기를 제거하기 위한 공개 인터페이스 리팩토링, Swift-Objective-C 순환 종속성 분리, SPM의 엄격한 소유권 규칙을 충족하기 위한 소스 트리 분리가 포함되었습니다. React Native의 기존 헤더 구조와의 격차를 해소하기 위해 팀은 Clang 가상 파일 시스템(VFS) 오버레이를 구현하여 컴파일러가 물리적인 재구성이 없이 가상 모듈식 레이아웃을 볼 수 있도록 했습니다.
빌드 시간 개선은 상당하며, 사전 컴파일된 React Native 코어는 빌드 시간을 약 44% 단축하고, Expo 모듈은 추가로 10%(총 50%), 타사 라이브러리는 또 다른 15%(총 65%) 단축합니다. SPM 매니페스트의 복잡성을 관리하기 위해 Package.swift 파일, 소스 구조 및 종속성 그래프를 자동 생성하는 새로운 도구가 개발되었습니다. 이 전환은 공존을 지원하여 개발자가 필요한 경우 사전 컴파일된 모듈을 비활성화할 수 있도록 하며, 생태계는 점진적으로 CocoaPods에서 벗어나고 있습니다.
이 인프라 마이그레이션은 Expo SDK 56의 더 광범위한 현대화 노력의 일환으로, 더 빠른 네이티브 빌드, 더 깔끔한 모듈식 아키텍처, Apple 개발 생태계와의 더 깊은 통합을 목표로 합니다. 다음 단계에는 호환성 안정화, 패키지 범위 확장, 성능 검증 및 React Native 업스트림과의 협업이 포함됩니다. 이 전환은 Apple 플랫폼에서 React Native 개발의 더 확장 가능한 미래를 향한 중요한 단계이며, 더 빠른 빌드, 개선된 도구, 그리고 궁극적으로 CocoaPods 없는 세상을 약속합니다.