<aside> 📋

</aside>

들어가며

최근 진행하고 있는 머니몽 프로젝트에서 모듈화를 적용 중이다. 보통 모듈을 만든다고 하면 Library 혹은 Framework로 프로젝트를 생성해 역할에 맞게 소스 코드를 분리한다.

지금까진 별 기준 없이 Framework로 만 모듈을 분리하였다. 많은 글에서 Framework로 모듈을 생성하는 글을 봤기 때문인 것 같다.

하지만, 어느 순간 왜 Library로 모듈을 만들면 안되나? 라는 의문이 들었다. 때문에 이번 기회에 Library와 Framework 차이에 대해 학습하고 나만의 기준을 잡아보려 한다.

Library와 Framework

Library와 Framework는 공통된 목적의 소스 코드를 묶어 독립적으로 배포할 수 있다는 공톰점이 있다. 때문에 둘은 모듈화의 도구로 사용된다. 하지만, 둘이 완전이 동일한 동작을 한다면 Apple은 둘을 분리하지 않았을 것이다.

둘의 차이는 천천히 알아보도록 하고, Library 먼저 살펴보겠다.

Library란

Library는 소스 코드와 데이터들의 집합이다. 독립적으로 배포 가능하기 때문에 재사용성이 높은 소스 코드를 Library를 통해 관리할 수 있다. 또한, Library는 이미지와 같은 리소스 자원을 포함할 수 없다.

Library는 두가지 타입으로 나뉜다.

Static Library

image.png

Static Library는 정적 라이브러리로 파일 확장자는 .a이며, 앱 컴파일 시점에 위 이미지와 같이 앱 소스 코드에 함께 포함되어 빌드된다.

이를 직접 확인해 볼 수 있는데

스크린샷 2025-01-13 오후 7.32.30.png

스크린샷 2025-01-13 오후 7.31.06.png

라이브러리를 직접 생성 및 App 프로젝트에 추가 후 빌드해보면,