티스토리 뷰

iOS 개발을 하다 보면 직접 라이브러리를 만들거나 외부 라이브러리를 추가해야 할 일이 많다.
그런데 라이브러리를 선택할 때 스태틱 라이브러리(Static Library)다이나믹 라이브러리(Dynamic Library) 라는 두 가지 개념이 등장한다.

어떤 차이가 있을까? 실행 속도, 앱 크기, 유지보수성 측면에서 어떤 것이 더 유리할까?
실제로 iOS 프로젝트에서 각각을 어떻게 활용해야 할까?


1️⃣ 스태틱 라이브러리 vs 다이나믹 라이브러리, 개념 정리

iOS에서 라이브러리는 공통 기능을 묶어 재사용할 수 있도록 만든 코드 모음이다.
이 라이브러리는 로드(Load) 방식에 따라 두 가지로 나뉜다.

구분  스태틱 라이브러리 (Static Library) 다이나믹 라이브러리 (Dynamic Library)
확장자 .a, .framework .dylib, .framework
로드 방식 컴파일 시 앱에 포함 앱 실행 시 로드
성능 실행 속도가 빠름 메모리 사용 최적화
앱 크기 크기가 증가 크기가 줄어듦
공유 가능 여부 앱 내에서만 사용 여러 앱에서 공유 가능
업데이트 앱을 다시 빌드해야 적용 앱 업데이트 없이 교체 가능
예시 libsqlite3.a UIKit.framework, CoreData.framework

이제 각각의 특징을 좀 더 자세히 살펴보자.


2️⃣ 스태틱 라이브러리(Static Library)

✅ 스태틱 라이브러리란?

  • 앱이 빌드될 때 라이브러리가 실행 파일에 직접 포함됨
  • 실행 속도는 빠르지만, 앱 크기가 증가
  • 다른 앱과 공유할 수 없으며, 각 앱이 개별적으로 포함해야 함

✅ 빌드 과정

  1. 소스 코드를 컴파일하여 .a 파일 생성
  2. 앱 바이너리와 함께 링킹되어 최종 실행 파일에 포함됨
  3. 외부 의존성이 없기 때문에 배포 시 안정적

✅ 장점

  • 실행 속도가 빠름 (앱 실행 시 추가 로드 과정이 없음).
  • 라이브러리가 실행 파일에 포함되므로 외부 환경에 영향을 받지 않음.
  • App Store 배포에 제한이 없음.

✅ 단점

  • 앱 크기가 커질 수 있음.
  • 라이브러리를 업데이트하려면 앱을 다시 빌드 및 배포해야 함.
  • 다른 앱과 공유할 수 없음 (앱 내부에서만 사용 가능).

📌 스태틱 라이브러리는 이런 경우에 유용하다!

  • 라이브러리를 자주 업데이트할 필요가 없을 때
  • 앱이 오프라인에서도 안정적으로 실행되어야 할 때
  • 실행 성능이 중요한 경우 (예: 실시간 처리, 게임 엔진 등)

3️⃣ 다이나믹 라이브러리(Dynamic Library)

✅ 다이나믹 라이브러리란?

  • 앱 실행 시 필요할 때 로드되는 라이브러리
  • 실행 파일 크기는 줄어들지만, 앱 실행 시 로드 시간이 필요할 수 있음
  • 여러 앱에서 공유할 수 있어 메모리 사용량을 절감

✅ 빌드 과정

  1. 소스 코드를 컴파일하여 .dylib 또는 .framework 형태로 생성
  2. 앱 실행 시 동적으로 라이브러리가 로드됨
  3. 라이브러리만 교체하면 앱을 업데이트하지 않고도 수정 가능

✅ 장점

  • 앱 실행 파일 크기가 줄어듦.
  • 라이브러리만 교체하면 업데이트가 가능 (앱 전체를 다시 빌드할 필요 없음).
  • 여러 앱에서 동일한 라이브러리를 공유할 수 있어 메모리 사용량이 절감됨.

✅ 단점

  • 앱 실행 시 라이브러리를 로드하는 과정이 필요하여 초기 실행 속도가 느려질 수 있음.
  • iOS의 App Store 정책상 .dylib 사용 불가, 다이나믹 프레임워크(.framework)만 가능.
  • 라이브러리가 삭제되거나 손상되면 앱이 실행되지 않을 수도 있음.

📌 다이나믹 라이브러리는 이런 경우에 유용하다!

  • 라이브러리를 자주 업데이트해야 할 때
  • 여러 앱에서 동일한 라이브러리를 공유해야 할 때
  • 앱 크기를 줄이고 싶을 때

4️⃣ 스태틱 프레임워크 vs 다이나믹 프레임워크

iOS에서는 .framework 형태의 라이브러리를 사용할 수도 있다.
프레임워크는 내부적으로 스태틱 프레임워크다이나믹 프레임워크로 나뉜다.

구분 스태틱 프레임워크 다이나믹 프레임워크

구분  스태틱 프레임워크 다이나믹 프레임워크
포함 방식 앱 바이너리에 포함 런타임에 로드
실행 속도 빠름 약간 느림
앱 크기 증가 감소
업데이트 앱 업데이트 필요 라이브러리만 교체 가능
사용 예시 일부 서드파티 라이브러리 UIKit.framework

 

Xcode 9부터는 스태틱 프레임워크 사용이 가능해졌다!
이전에는 .framework 형식은 무조건 다이나믹 프레임워크였지만, 이제는 스태틱 프레임워크도 사용할 수 있다.


5️⃣ 실무에서 라이브러리 선택 기준

✅ 스태틱 라이브러리를 선택해야 하는 경우

  • 라이브러리를 외부 환경에 의존하지 않고 안정적으로 유지하고 싶을 때
  • 실행 속도가 중요한 경우
  • App Store 심사 제한을 피하고 싶을 때

✅ 다이나믹 라이브러리를 선택해야 하는 경우

  • 라이브러리를 자주 업데이트해야 할 때
  • 앱 크기를 줄이고 싶을 때
  • 여러 앱에서 공유해야 할 때

📌 결론:

  • 대부분의 iOS 앱에서는 스태틱 라이브러리 또는 다이나믹 프레임워크를 사용한다.
  • 서드파티 SDK는 다이나믹 프레임워크를 사용하는 경우가 많다.
  • 성능을 우선시한다면 스태틱 라이브러리, 유지보수성을 높이고 싶다면 다이나믹 라이브러리가 적합하다.

정리

스태틱 라이브러리컴파일 시 포함되며, 실행 속도가 빠르지만 앱 크기가 증가한다.
다이나믹 라이브러리런타임에 로드되며, 앱 크기는 줄어들지만 실행 속도가 약간 느려질 수 있다.
✅ iOS 앱에서는 스태틱 라이브러리(.a), 다이나믹 프레임워크(.framework) 가 주로 사용된다.
✅ App Store 배포 시 .dylib 사용은 불가능하며, 다이나믹 프레임워크를 사용해야 한다.
✅ 실무에서는 앱 크기와 성능, 업데이트 용이성을 고려해 적절한 라이브러리를 선택해야 한다.

 

스태틱 vs 다이나믹 라이브러리, 이제 확실히 이해됐을까?
프로젝트에서 어떤 방식이 더 적절할지 고민해보고, 직접 적용해보자!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함