관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 번들과 패키지(Bundle, package), Framework 개념 본문

iOS 기본 (swift)

[iOS - swift] 번들과 패키지(Bundle, package), Framework 개념

jake-kim 2021. 2. 12. 19:42

Bundle이란

  • 실행 가능한 코드와 그 코드가 사용하는 자원을 포함하고 있는 디렉토리
  • 가지고 있는 내용 - info.plist, assets, string 파일 등
  • 프레임워크 번들은 dynamic library에서 사용하는 코드와 자원을 포함
  • 모든 앱 Bundle은 앱에 대한 정보가 담긴 info.plist파일을 갖음

Package란

  • Finder가 사용자에게 단일 파일로 보여주는 디렉토리

"패키지 내용 보기" -> 이 옵션이 있는 경우 package
package 내용 보기를 선택한 경우

  • package는 macOS에서 디렉토리를 추상화하는 방법 중 하나
  • 가지고 있는 내용 - .app, .playground, .plugin
  • Bundle Display Name: Bundle은 사용자에게 보여지는 이름과 실제 Bundle이 사용하는 File System의 이름을 따로 관리
    - Finder에서 이름을 변경하는 것은 Display Name만 변경하는 것
    - 대표적으로 .app이 생략된 Display Name을 사용

NSBundle이란

  • Bundle에 포함된 코드와 리소스에 대한 표현
  • NSBundle은 ObjectiveC를 통해 만들어진 Foundation Class이며 Bundle 디렉토리 안에 포함된 리소스에 쉽게 접근할 수 있도록 제공되는 객체

Main Bundle이란

  • Bundle은 여러가지가 있지만, mainBundle은 앱이 실행되는 코드가 있는 Bundle 디렉토리에 접근할 수 있게 도와주는 bundle

  • 접근
print(Bundle.main.bundleURL) // main bundle의 위치
print(Bundle.main.bundleIdentifier)

// Bundle에 있는 이미지에 접근
Bundle.main.url(forResource: "ImageName", withExtension: "jpg")

Copy Bundle Resource

  • mainBundle에 들아가 있는 리소스 파일들은 빌드할 때 추가가 됨
    - Xcode의 Build Phase에 존재 - "Copy Bundle Resources"
    - 해당 항목에서 앱에 추가할 리소스를 결정
    - 해당 항목에 없는 리소스는 Project Navigator에 추가되어 있어도 실제로 Bundle에서는 접근할 수 없음

Framewrok

  • 공유자원 (dynamic library, nib 파일, 이미지 파일)을 단일 패키지 형태로 담고 있는 디렉토리
  • framework는 library와 달리 리소스를 포함할 수 있고 framework을 모듈 배포에 있어서 더 많은 활용이 가능
  • framework는 파일 시스템의 Bundle로 패키징되어 Core Foundation Bundle Service를 이용할 수 있음
  • NSBundle class로 접근 가능

* 참고

nshipster.co.kr/bundles-and-packages/

hcn1519.github.io/articles/2019-11/framework_basic

hcn1519.github.io/articles/2018-12/bundle

 

 

Comments