Swift

프레임워크 vs 라이브러리

Daesiker 2025. 4. 7. 00:15
반응형

📚 라이브러리 (Library)

✅ 개념

하나의 기능에 집중된 코드 집합

Swift/ObjC로 작성되며, 보통 .a, .dylib, .swiftmodule 등으로 존재

✅ 장점

빠른 적용: 필요한 기능만 가져와서 바로 사용 가능

가볍고 효율적: 프레임워크보다 상대적으로 무겁지 않음

재사용성: 다양한 앱에서 동일한 기능을 쉽게 재사용

❌ 단점

모듈화 부족: UI, 리소스 같은 것 포함 어렵거나 별도로 관리해야 함

버전 충돌 위험: 여러 라이브러리가 같은 의존성을 사용할 경우 충돌 가능

✅ 종류

1. 정적 라이브러리(Static Library)

  • .a 확장자
  • 컴파일 타임에 앱에 통합한다.(‼️앱의 바이너리 크기 증가)
  • 런타임 의존성이 없어서, 성능이 좋다.

2. 동적 라이브러리(Dynamic Library)

  • .dylib, .framework 타입
  • 런타임에 로드되어 로딩시간이 증가한다(‼️성능 문제 발생)
  • AppStore에 정책 제약때문에 대부분의 심사에서 거절당한다.
    • 모든 코드가 검증 가능하고 고정되어야한다.
    • 모든 코드가 정적인 번들 안에 포함되어야 한다.

🧱 프레임워크 (Framework)

✅ 개념

코드뿐 아니라 리소스(이미지, xib), 메타데이터, 헤더 등을 포함하는 완성도 높은 재사용 단위

Static or Dynamic, .framework or .xcframework 형식

✅ 장점

모듈화: 코드, UI, 리소스를 하나로 묶어서 배포 가능

확장성: 기능별로 프레임워크를 나눠서 구조화할 수 있음

캡슐화: 내부 구현을 숨기고, API만 외부에 공개

❌ 단점

학습 곡선: 프로젝트 구조와 설정이 복잡할 수 있음

앱 사이즈 증가 가능성: 동적 연결 시 로딩 시간 고려 필요


📦 패키지 (Package, SPM)

✅ 개념

Swift Package Manager(SPM)를 통해 코드를 모듈 단위로 배포/관리하는 방식

Swift 5 이후 공식 지원 → .package(url:...) 형태로 통합 가능

✅ 장점

간편한 의존성 관리: 버전 지정, 자동 설치

정확한 모듈화: 기능 단위로 패키지 관리 가능

공식 통합 도구: Xcode와 원활하게 작동

❌ 단점

지원 제한: Xcode 11 이하에선 지원 안 됨

배포 방식 제한: 일부 외부 리소스 관리가 복잡할 수 있음


Swift 생태게에서 오픈소스 라이브러리들은 어떻게 배포될까??

결론만 말하면 앞에 3가지를 모두 사용한다.

1. 기능을 구현한 라이브러리 코드 작성

2. 프레임워크 구조로 감쌈

3-1. Swift Package Manager(SPM)으로 패키징

3-2. CocoaPods(패키징 시스템)을 통한 설치

반응형

'Swift' 카테고리의 다른 글

Apple Push Notification 설정(2)  (1) 2024.09.01
Apple Push Notification 설정(1)  (0) 2024.08.25
[Swift] Privacy Info  (0) 2024.08.18
<Value Type> Set  (1) 2024.03.03
14. UI Test  (0) 2022.12.31