바이너리 대상과 XCFramework
폐쇄 소스 코드를 XCFramework로 배포하고 바이너리 대상으로 사용합니다.
바이너리 대상과 XCFramework은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
바이너리 대상이란 무엇입니까
바이너리 대상은 소스 코드 대신 미리 컴파일된 프레임워크(XC프레임워크)를 배포하여 독점 구현을 보호합니다.
// Package.swift:
.binaryTarget(
name: "ClosedSDK",
path: "Frameworks/ClosedSDK.xcframework"
)XC프레임워크란 무엇입니까
하나의 배포 가능한 아카이브에 여러 플랫폼용 슬라이스(iOS, macOS, 시뮬레이터)를 묶습니다.
// XCFramework structure:
// ClosedSDK.xcframework/
// ├── ios-arm64/
// ├── ios-arm64_x86_64-simulator/
// └── macos-arm64_x86_64/XCFramework 만들기
각 플랫폼용 아카이브를 빌드한 다음 xcodebuild -create-xcframework로 결합합니다.
xcodebuild archive -scheme MySDK -destination "generic/platform=iOS" -archivePath ios.xcarchive SKIP_INSTALL=NO
xcodebuild archive -scheme MySDK -destination "generic/platform=iOS Simulator" -archivePath sim.xcarchive SKIP_INSTALL=NO
xcodebuild -create-xcframework \
-framework ios.xcarchive/Products/Library/Frameworks/MySDK.framework \
-framework sim.xcarchive/Products/Library/Frameworks/MySDK.framework \
-output MySDK.xcframework체크섬을 사용하는 원격 바이너리 대상
무결성 검증을 위해 원격으로 호스팅된 XCFramework ZIP 파일을 SHA-256 체크섬과 함께 참조합니다.
.binaryTarget(
name: "ClosedSDK",
url: "https://cdn.example.com/ClosedSDK-1.0.0.xcframework.zip",
checksum: "abc123def456..."
)체크섬 계산하기
swift package compute-checksum을 사용해 ZIP 파일의 SHA-256 체크섬을 생성합니다.
swift package compute-checksum ClosedSDK-1.0.0.xcframework.zip
# Outputs: abc123def456...앱에서 바이너리 대상 사용하기
소스 대상과 마찬가지로 다른 대상의 dependencies 목록에 바이너리 대상을 종속 항목으로 추가합니다.
.target(
name: "MyApp",
dependencies: [
.target(name: "ClosedSDK")
]
)XCFramework 가져오기
다른 가져오기와 정확히 같은 방식으로 Swift 코드에서 모듈을 가져옵니다.
import ClosedSDK
let result = ClosedSDK.ProcessData(input: myData)개인정보 보호 매니페스트 요구 사항
Apple은 App Store에 배포하는 XCFramework에 사용된 API를 나열한 PrivacyInfo.xcprivacy 매니페스트를 포함하도록 요구합니다.
// ClosedSDK.xcframework/
// ├── ios-arm64/ClosedSDK.framework/
// │ └── PrivacyInfo.xcprivacy
// └── ...디버그 빌드와 릴리스 빌드 비교
XCFramework를 사용할 때 디버거에서 소스 코드를 단계별로 실행할 수 없으며 심볼만 볼 수 있습니다. 충돌 심볼 변환을 위해 dSYM 파일을 함께 묶을 수 있습니다.
// Distribute dSYMs alongside XCFramework for crash reporting:
// ClosedSDK-1.0.0.xcframework.zip
// ClosedSDK-1.0.0.dSYM.zipXCFramework 버전 관리
파일 이름과 SPM 패키지 버전에 시맨틱 버전 관리를 사용하면 사용자가 호환되는 버전을 고정할 수 있습니다.
// ClosedSDK-1.2.0.xcframework.zip
// In Package.swift:
// .package(url: "...", from: "1.2.0")XCFramework와 소스 패키지 비교
독점 코드, 대규모 사전 컴파일 SDK 또는 C/C++ 래퍼에는 XCFramework를 사용합니다. 오픈 소스 Swift 코드에는 소스 패키지를 사용합니다.
// XCFramework: proprietary analytics SDK, vendor-provided libraries
// Source: open-source Alamofire, SwiftUI components간단한 확인
Package.swift에서 원격 바이너리 대상을 선언할 때 체크섬을 포함하는 이유는 무엇입니까?
강의 요약
바이너리 대상은 소스 코드 없이 사전 컴파일된 XCFramework를 배포합니다. xcodebuild -create-xcframework로 빌드하고, ZIP 파일을 호스팅한 뒤 swift package compute-checksum으로 체크섬을 계산하여 Package.swift에 선언합니다. App Store에 제출하려면 PrivacyInfo.xcprivacy를 포함합니다.
자주 묻는 질문
“바이너리 대상과 XCFramework” 강의는 무료인가요?
네 — “바이너리 대상과 XCFramework” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“바이너리 대상과 XCFramework”에서 뭘 배우나요?
폐쇄 소스 코드를 XCFramework로 배포하고 바이너리 대상으로 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Swift Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“바이너리 대상과 XCFramework” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Package.swift: 대상, 제품 및 의존성
- 로컬 패키지와 기능 모듈
- 바이너리 대상과 XCFramework
- 버전 관리, 충돌 해결 및 Swift 플러그인