2. Xcode 프로젝트 설정 — xcframework 직접 포함하기
이 단계에서는 매니페스트 병합이나 저장소 URL을 사용하지 않습니다. 두 개의 바이너리 프레임워크를 Xcode 프로젝트에 직접 연결합니다. 팀에서 사용하는 설정 스크립트가 있다면 스크립트로 처리해도 됩니다.
2.1 프레임워크 배치 위치
AKSKit.xcframework와 AppsKit.xcframework를 .xcodeproj가 있는 폴더 바로 아래에 배치하세요. 즉, Podfile 및 앱 소스 폴더와 같은 경로 수준에 두어야 하며, 앱 소스 폴더나 Pods/ 안에 넣으면 안 됩니다. Xcode는 폴더 접두사 없는 상대 경로로 프레임워크 참조를 확인하므로 이 위치가 중요합니다. 별도의 FRAMEWORK_SEARCH_PATHS 설정은 필요하지 않지만, 프레임워크를 다른 위치로 옮기면 프로젝트 파일의 참조가 깨집니다.
YourApp/ <- CocoaPods project root (Podfile lives here)
├── Podfile
├── AKSKit.xcframework/ <- sibling of the .xcodeproj
├── AppsKit.xcframework/ <- sibling of the .xcodeproj
├── YourApp.xcodeproj/
├── YourApp.xcworkspace/ <- open THIS, not the .xcodeproj, once Pods are installed
└── YourApp/ <- your app target's source folder
├── AppDelegate.swift
└── ...2.2 앱 타깃에 프레임워크 추가
Xcode에서 앱 타깃 → General → Frameworks, Libraries, and Embedded Content를 선택한 다음, 두 .xcframework 파일을 모두 추가하고 각각 Embed & Sign으로 설정하세요. 구체적으로 다음 항목이 구성되어야 합니다.
- 각 프레임워크의
PBXFileReference에sourceTree = "<group>"과 폴더 접두사 없는path지정 - Link Binary With Libraries 빌드 단계(
PBXFrameworksBuildPhase)에 두 프레임워크 모두 포함 - Embed Frameworks 파일 복사 빌드 단계(
PBXCopyFilesBuildPhase,dstSubfolderSpec = 10)에 두 프레임워크를 모두 포함하고CodeSignOnCopy+RemoveHeadersOnCopy속성 지정 — Xcode UI에서 "Embed & Sign"을 선택하면 바로 이 구성이 생성됩니다.
또한 LD_RUNPATH_SEARCH_PATHS에 @executable_path/Frameworks가 포함되어 있는지 확인하세요. Xcode UI에서 프레임워크를 임베드하면 이 값이 자동으로 추가되며, 앱에 포함되고 서명된 프레임워크를 런타임에 로드할 수 있게 해 줍니다.
Xcode UI 대신 스크립트로 구성하는 경우(예: CI 설정 단계), 위의 세 가지 요소인 파일 참조, 링크 빌드 단계, 임베드 빌드 단계를
project.pbxproj에 추가하면 됩니다.
2.3 프로젝트가 아닌 워크스페이스 열기
pod install을 실행한 후에는 YourApp.xcworkspace를 여세요. 이 워크스페이스가 앱 타깃과 CocoaPods에서 생성한 Pods.xcodeproj를 연결합니다. .xcodeproj를 직접 열면 Podfile에 정의된 의존성이 올바르게 링크되지 않은 상태로 빌드됩니다.