코딩/비쨔

정적 라이브러리 동적 라이브러리

흑백 개발자 2025. 2. 19. 11:30
728x90

정적 라이브러리(Static Library)는 컴파일 시에 애플리케이션 코드에 직접 포함되는 코드 모음입니다. 이것이 동적 라이브러리(Dynamic Library)와 어떻게 다른지 설명해드리겠습니다:

정적 라이브러리 (Static Library):

  • 컴파일 시점에 앱 바이너리에 완전히 통합됩니다
  • iOS에서는 .a 파일 확장자를 가집니다
  • 앱 바이너리 크기가 커집니다
  • 앱 실행 시 별도 로딩 과정이 필요 없어 시작 속도가 빠릅니다
  • 여러 앱에서 같은 라이브러리를 사용해도 각 앱마다 복사본이 존재합니다

동적 라이브러리/프레임워크 (Dynamic Library/Framework):

  • 실행 시점에 로드됩니다
  • iOS에서는 .dylib 또는 .framework로 구현됩니다
  • 앱 바이너리 크기가 작아집니다
  • 여러 앱이 메모리에 로드된 하나의 라이브러리를 공유할 수 있습니다
  • 런타임에 로드되므로 앱 시작 시간이 약간 길어질 수 있습니다

현재 문제의 맥락:

  • use_frameworks!는 CocoaPods에게 동적 프레임워크 방식으로 의존성을 관리하라고 지시합니다
  • 그러나 Flutter는 정적 라이브러리로 빌드되고 있습니다
  • 이 충돌로 인해 'Flutter-ObjC' 프레임워크를 찾지 못하는 오류가 발생합니다

이 문제를 해결하려면 pre_install 블록을 통해 Flutter 관련 모듈의 빌드 타입을 명시적으로 정적 라이브러리로 지정해야 합니다. 이렇게 하면 Flutter의 정적 라이브러리 특성과 use_frameworks! 설정 간의 충돌을 해결할 수 있습니다.

728x90