App Bundle의 구조와 역할 - Neph's iOS blog

Bundle

알려진 것들로 이루어진 디렉토리, 실행 가능한 코드와 그 코드가 사용하는 자원들을 포함하고 있다.

코드와 자원을 모으는 구조를 제공하여 개발자 경험을 향상시키는 것을 가장 우선시 하는데, 이 구조는 코드나 자원의 예측 가능한 로딩뿐만 아니라 지역화 같은 시스템 차원의 기능도 허용한다.

Bundle은 크게 App Bundle, Framework Bundle, Loadable Bundle로 나뉠 수 있다.

App Bundle

실행될 수 있는 executable과 그 executable을 설명하는 Info.plist 파일 그리고 실행하기위해 사용 되는 launch 이미지를 포함한 asset과 support, Interface 파일, string 파일, 데이터 파일로 이루어져 있다.

Framework Bundle

Dynamic Shared Library라 불리는 동적 공유 라이브러리에서 사용되는 코드와 자원을 포함하고 있다.

Loadable Bundle

앱의 기능성을 확장시켜주는 실행 가능한 코드와 자원을 포함하고 있고 플러그인이 대표적인 예시이다.

번들의 컨텐츠는 Bundle.main을 사용해서 접근할 수 있으며 대부분의 경우 url(forResource:withExtension) 메서드를 사용하여 특정 자원의 위치를 알아낼 수 있다.

Bundle.main.url(forResource: "Photo", withExtension: "jpg")

모든 앱 번들은 앱에 대한 정보가 담겨 있는 Info.plist 파일을 가지며 bundleURL과 bundleIdentifier를 포함한 몇몇 데이터는 아래와 같이도 접근할 수 있다.

let bundle = Bundle.main

bundle.bundleURL // 앱의 저장위치
bundle.bundleIdentifier // Identifier