[iOS] XCFramework 만들기

욜로~ 차니에요!

 

오늘은 XCFramework에 대해 다뤄보도록 할게요.

포스팅과 관련된 내용은 아래 링크에서 참고했고 특히 민소네님이 정리해주신 게시글에 상세하게 설명이되어있으니 특징이나 동작원리 등이 궁금하신 분들은 이동해서 정독해주세요!

 

WWDC 2019 공식 발표

 

Binary Frameworks in Swift - WWDC19 - Videos - Apple Developer

Xcode 11 now fully supports using and creating binary frameworks in Swift. Find out how to simultaneously support devices and Simulator...

developer.apple.com

http://minsone.github.io/ios/mac/ios-wwdc-2019-binary-frameworks-in-swift-little-summary-and-translate

 

[번역][WWDC][Xcode] Binary Frameworks in Swift 살짝 정리 - XCFramework

들어가기 전 WWDC 2019 - Binary Frameworks in Swift 세션의 발표를 번역 및 일부 요약하였습니다. XCFramework를 만드는 방법 및 프레임워크를 다룰 때 어떻게 해야하는지, 호환성은 어떻게 지켜야 하는지 등

minsone.github.io

 

1. XCFramework 프로젝트 생성하기

1-1. Framework 항목으로 새 프로젝트를 생성하였습니다.
1-2. 저는 AnimalFramework로 Product Name을 입력하였습니다.

2. XCFramework 작성하기

1번에서 작성한 프레임워크 내용을 조금 채워보도록 할게요.

2-1. 동물들 이름을 enum 타입으로 넣어봤어요.
2-2. bark라는 함수에 동물 종류를 넣으면 어떻게 짖는지 출력하는 함수를 작성했어요.

3. XCFramework 빌드

프레임워크 빌드를 위한 사전 작업이 완료되었습니다.

이제 프레임워크 빌드를 해보도록 하겠습니다.

 

터미널에서 프레임워크 경로로 이동 후 아래 작업을 실행합니다.

첫 번째 작업은 여러 프레임워크 지원을 위한 아카이브 작업 (ios, sim-os, macos 등)

두 번째는 프레임워크 통합 입니다.

xcodebuild archive -scheme [Scheme 명] -archivePath [Archive 출력 경로] -sdk iphoneos SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
xcodebuild archive -scheme AnimalFramework -archivePath './build/ios.xcarchive' -sdk iphoneos SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
xcodebuild archive -scheme AnimalFramework -archivePath './build/ios_sim.xcarchive' -sdk iphonesimulator SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES

 

이제 각각 아카이브 한 프레임워크를 하나로 통합하는 작업을 합니다.
xcodebuild -create-xcframework \
    -framework "./build/ios.xcarchive/Products/Library/Frameworks/AnimalFramework.framework" \
    -framework "./build/ios_sim.xcarchive/Products/Library/Frameworks/AnimalFramework.framework" \
    -output "/Users/ycsong/Desktop/AnimalFramework.xcframework"

 

4. XCFramework 테스트

3번 과정까지 무사히 끝났다면 .xcframework 파일이 생성되셨을텐데요, 프로젝트에 넣고 테스트 해보도록 하겠습니다.

SampleApp에 빌드한 XCFramework를 넣고 테스트 코드를 작성해보았습니다.