타사에 방송 송출 기능을 제공하기 위한 Framework
는 소스를 외부에서 확인할 수 없도록 구현되어야 한다. 구현 소스 내용의 은닉성(encapsulation)
을 보장하기 위해 Binary Framework 형태로 구현되어야 한다.
앱에서 사용하는 오픈 소스 Library
는 Framework
라는 명칭 대신 구분을 위해 Third Party
Library로 표기함.
현재 애플에서 제공하는 프레임워크 방식은 XCFramework이며, Binary Framework
Target 옵션으로 생성한다. 배포 방식은 애플에서 지원하는 Swift Package Manager
방식 및 Thrid Party
배포 방식인 Cocoapod이나 Carthage 방식으로도 배포가 가능하다.
Framework로 구현하고자 하는 기존 소스 및 리소스를 구현 프로젝트로 가져온다. 구현 내용 중 Third Party Library 기능을 적용하기 위해 Library Source 원본을 가져온다.
-
작업하는 소스 프로젝트에 추가하고자 하는 Library를 소스 형태로 추가하고, 추가된 프레임워크의 타겟으로 변경하여 Library를 컴파일하여, 오브젝트 형태로 프레임워크에 추가한다.
-
추가한 Library를 XCode Menu의 General→Frameworks and Libraries에 Library의
.framework
파일을 Drag & Drop 으로 추가하고,Embed & Sign
형태로 설정한다. Build Phase 메뉴에서Link Binary With Libraries
메뉴에 Library가 포함되어 있는지 확인다. -
추가한 Library를 소스에서 import 후 Library 동작을 확인한다.
-
Build Settings
메뉴에서BUILD_LIBRARIES_FOR_DISTRIBUTION
옵션을YES
로 설정한다.
주의: @import
구문이 포함된 라인에 Warning 메세지가 발생할 경우 정상적으로 Library가 추가되지 않은것이다.
XCFramework는 Platform
(MacOS, iOS, iOS-Simulator, iPadOS, WatchOS) 별로 xcarchive 파일을 생성할 수 있다. 구현 소스는 전화번호 인증 및 카메라 송출 기능이 포함되어 있기 때문에, 시뮬레이터에서는 사용할 수 없기 때문에 iOS 타켓으로만 아카이빙한다.
xcodebuild archive \\
-scheme DemoXCFramework \\
-configuration Release \\
-destination 'generic/platform=iOS' \\
-archivePath './build/DemoXCFramework.framework-iphoneos.xcarchive' \\
SKIP_INSTALL=NO \\
BUILD_LIBRARIES_FOR_DISTRIBUTION=YES
xcodebuild -create-xcframework \\
-framework './build/DemoXCFramework.framework-iphoneos.xcarchive/Products/Library/Frameworks/DemoXCFramework.framework' \\
-output './build/DemoXCFramework`.xcframework
Swift Package
프로젝트의Package.swift
파일에targets
옵션을.binaryTarget
으로 설정하고,XCFramework
파일 추가Swift Package
버전 정보 변경
GitHub Repository
에 소스 업로드 후 변경한 버전을Git Tag
로 추가하고,Tag
를Release
로 변경하여 배포한다.- 배포된
Framework
를 사용하기 위해 porting한 앱은Framework
파일 내부에 오브젝트 형태로 존재하는 Library를Framework
적용시 같이 동일한 버전으로 적용해야 정상동작한다.