클라이언트
[iOS] 바이너리 프레임워크(Binary Framework) 생성 및 사용 방법
애기공룡훈련병
2025. 2. 18. 12:05
반응형
1. 바이너리 프레임워크란?
바이너리 프레임워크(Binary Framework)는 컴파일된 코드와 리소스를 포함하는 프레임워크로, 라이브러리 형태로 제공되어 소스 코드 없이도 사용할 수 있다. 이는 일반적으로 라이브러리의 보안을 강화하고 빌드 시간을 줄이며, 코드 배포를 간편하게 만드는 데 유용하다.
2. 바이너리 프레임워크 vs. 소스 코드 프레임워크
비교 항목 | 바이너리 프레임워크 | 소스 코드 프레임워크 |
배포 방식 | 컴파일된 바이너리 형태로 배포 | 소스 코드 형태로 배포 |
코드 보호 | 소스 코드가 포함되지 않아 보호됨 | 코드가 포함되어 있음 |
빌드 속도 | 빠름 (컴파일 과정 생략) | 느림 (빌드 필요) |
유지보수 | 버전 관리가 필요함 | 코드 변경이 유연함 |
의존성 관리 | XCFramework 또는 CocoaPods 등을 활용 | 직접 코드 수정 가능 |
3. 바이너리 프레임워크 생성 방법
바이너리 프레임워크는 Apple의 XCFramework를 사용하여 생성할 수 있다. XCFramework는 iOS, macOS, watchOS, tvOS 등 여러 플랫폼을 지원한다.
3.1 바이너리 프레임워크 생성 (XCFramework)
- 새로운 프레임워크 프로젝트 생성
- Xcode에서 Framework 프로젝트를 생성한다.
- File > New > Project > Framework 선택 후 Next.
- 프로젝트 이름과 대상 플랫폼을 설정한다.
- 프레임워크 코드 작성
- Public 인터페이스를 정의한다.
- Headers를 정리하여 필요한 API만 공개한다.
- 아카이브 및 XCFramework 생성
- xcodebuild 명령어를 사용하여 XCFramework를 만든다.
xcodebuild archive \ -scheme MyFramework \ -destination "generic/platform=iOS" \ -archivePath "./archives/MyFramework_iOS.xcarchive" \ SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES xcodebuild archive \ -scheme MyFramework \ -destination "generic/platform=iOS Simulator" \ -archivePath "./archives/MyFramework_iOSSimulator.xcarchive" \ SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES
- XCFramework 생성:
xcodebuild -create-xcframework \ -framework "./archives/MyFramework_iOS.xcarchive/Products/Library/Frameworks/MyFramework.framework" \ -framework "./archives/MyFramework_iOSSimulator.xcarchive/Products/Library/Frameworks/MyFramework.framework" \ -output "./MyFramework.xcframework"
4. 바이너리 프레임워크 사용 방법
생성된 XCFramework는 여러 방식으로 프로젝트에서 사용할 수 있다.
4.1 직접 추가하기
- Xcode 프로젝트에 .xcframework를 드래그하여 추가.
- Build Phases > Link Binary With Libraries에서 추가된 프레임워크를 확인.
4.2 Swift Package Manager (SPM) 사용
- .xcframework를 GitHub 등에 업로드 후, Package.swift에 추가.
let package = Package(
name: "MyFramework",
products: [
.library(
name: "MyFramework",
targets: ["MyFramework"])
],
targets: [
.binaryTarget(
name: "MyFramework",
url: "https://example.com/MyFramework.xcframework.zip",
checksum: "")
]
)
5. 바이너리 프레임워크 배포 및 버전 관리
5.1 CocoaPods 배포
- podspec 파일 생성
Pod::Spec.new do |s|
s.name = "MyFramework"
s.version = "1.0.0"
s.summary = "A powerful iOS framework."
s.description = "MyFramework provides essential utilities."
s.homepage = "https://github.com/user/MyFramework"
s.license = { :type => "MIT", :file => "LICENSE" }
s.author = { "Your Name" => "your.email@example.com" }
s.source = { :git => "https://github.com/user/MyFramework.git", :tag => s.version.to_s }
s.vendored_frameworks = "MyFramework.xcframework"
s.platform = :ios, "13.0"
end
- pod repo push 명령어로 배포.
5.2 GitHub Release 및 SPM 배포
- XCFramework를 압축하여 GitHub Release에 업로드.
- SPM을 통해 버전 관리.
6. 예제 코드
예제 1: 프레임워크에서 기본 기능 제공
import Foundation
public class MyFramework {
public static func greet(name: String) -> String {
return "Hello, \(name)!"
}
}
예제 2: iOS 앱에서 바이너리 프레임워크 사용
import UIKit
import MyFramework
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print(MyFramework.greet(name: "애기공룡훈련병"))
}
}
결론
바이너리 프레임워크는 소스 코드 보호와 빌드 시간 단축 등의 장점이 있지만, 배포 및 버전 관리에 주의해야 한다. XCFramework를 활용하면 여러 플랫폼을 지원하는 강력한 바이너리 프레임워크를 만들 수 있다. 배포 방법으로는 CocoaPods, SPM 등을 활용할 수 있으며, 각 방식에 맞춰 적절한 전략을 선택하는 것이 중요하다.
반응형