클라이언트

[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)

  1. 새로운 프레임워크 프로젝트 생성
    • Xcode에서 Framework 프로젝트를 생성한다.
    • File > New > Project > Framework 선택 후 Next.
    • 프로젝트 이름과 대상 플랫폼을 설정한다.
  2. 프레임워크 코드 작성
    • Public 인터페이스를 정의한다.
    • Headers를 정리하여 필요한 API만 공개한다.
  3. 아카이브 및 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 등을 활용할 수 있으며, 각 방식에 맞춰 적절한 전략을 선택하는 것이 중요하다.

반응형