A representation of the code and resources stored in a bundle directory on disk.
디스크의 번들 디렉토리에 저장된 코드 및 리소스의 표현입니다.
Apple은 번들을 사용하여 앱, 프레임워크, 플러그인 및 기타 여러 특정 유형의 콘텐츠를 나타냅니다. 번들은 포함된 리소스를 잘 정의된 하위 디렉토리로 구성하며, 번들 구조는 플랫폼과 번들 유형에 따라 달라집니다. 번들 개체를 사용하면 번들의 구조를 모르는 상태에서 번들의 리소스에 액세스할 수 있습니다.
bundle object
는 번들 구조, 사용자 기본 설정, 사용 가능한 지역화 및 기타 관련 요소를 고려하여 항목을 찾기 위한 단일 인터페이스를 제공합니다.
모든 실행 파일은 bundle object
를 사용하여 앱 번들 내부 또는 다른 곳에 있는 알려진 번들에서 리소스를 찾을 수 있습니다.
번들 개체를 사용하여 컨테이너 디렉토리나 파일 시스템의 다른 부분에서 파일을 찾지 않습니다. 번들 개체를 사용하는 일반적인 패턴은 다음과 같습니다.
- 원하는 번들 디렉토리에 대한 번들 개체를 생성합니다.
- 번들 개체의 방법을 사용하여 필요한 리소스를 찾거나 로드합니다.
- 다른 시스템 API를 사용하여 리소스와 상호 작용합니다.
자주 사용하는 일부 유형의 리소스를 번들 없이 찾아서 열 수 있습니다. 예를 들어 이미지를 로드할 때 UIImage
또는 NSImage
이미지의 init(named:)
메소드를 사용하여 이미지를 자산 카탈로그에 저장하고 로드합니다. 마찬가지로 문자열 리소스의 경우 전체 .strings 파일을 직접 로드하는 대신 NSLocalizedString
을 사용하여 개별 문자열을 로드합니다.
번들은 다른 위치로 옮기기만 하면 어플리케이션이나 다른 소프트웨어 파일들을 쉽게 설치, 재배치할 수 있게 도와줍니다. 번들은 internationalization에 있어 중요한 요소입니다. 로컬 리소스를 특별히 이름 지어진 번들의 하위 디렉토리(specially named subdirectories of a bundle)에 저장합니다. 프로그램적 설비들(programmatic facilities)은 유저의 언어 선호도(a user’s language preferences)와 관련된 위치에서 로컬 리소스를 찾습니다.
Xcode 프로젝트들은 대부분 빌드할 때 하나의 번들을 만듭니다. 그렇기 때문에 직접 번들을 구성할 필요가 거의 없죠. 그렇더라도 그 구조를 이해하고 어떻게 그 안에 있는 코드와 리소스에 접근 하는지는 이해하는 건 중요합니다.
파일 | 설명 |
---|---|
Info.plist 파일 |
(필수) 응용 프로그램에 대한 구성 정보를 포함 하는 구조화된 파일 입니다. 시스템은 이 파일의 존재에 의존하여 애플리케이션 및 관련 파일에 대한 관련 정보를 식별합니다. |
Executable | (필수) 모든 응용 프로그램에는 실행 파일이 있어야 합니다. 이 파일에는 응용 프로그램의 기본 진입점과 응용 프로그램 대상에 정적으로 연결된 코드가 포함되어 있습니다. |
Resource files | 애플리케이션의 실행 파일 외부에 있는 데이터 파일입니다. 리소스는 일반적으로 image , icon , sound , nib file , 문자열 파일, 구성 파일(configuration files ) 및 데이터 파일로 구성됩니다 . 대부분의 리소스 파일은 특정 언어 또는 지역에 맞게 localizations되거나 모든 localizations에서 공유할 수 있습니다. 번들 디렉토리 구조에서 리소스 파일의 배치는 iOS 또는 Mac 앱을 개발 중인지 여부에 따라 다릅니다. |
Other support files | Mac 앱은 비공개 프레임워크 , 플러그인, 문서 템플릿 및 애플리케이션에 필수적인 기타 사용자 지정 데이터 리소스와 같은 고급 리소스를 추가로 포함할 수 있습니다. iOS 애플리케이션 번들에 사용자 지정 데이터 리소스를 포함할 수 있지만 사용자 지정 프레임워크 또는 플러그인은 포함할 수 없습니다. |
Listing 2-1 Bundle structure of an iOS application - iOS application의 번들 구조(예시)
MyApp.app
MyApp
MyAppIcon.png
MySearchIcon.png
Info.plist
Default.png
MainWindow.nib
Settings.bundle
MySettingsIcon.png
iTunesArtwork
en.lproj
MyImage.png
fr.lproj
MyImage.png
파일 | 설명 |
---|---|
MyApp |
(필수) 애플리케이션 코드가 포함된 실행 파일입니다. 이 파일의 이름은 응용 프로그램 이름에서 .app 확장자를 뺀 것과 같습니다 . |
Application icons( MyAppIcon.png , MySearchIcon.png 및 MySettingsIcon.png ) |
(권장) 애플리케이션 아이콘은 애플리케이션을 나타내기 위해 특정 시간에 사용됩니다. |
Info.plist |
(필수) 이 파일에는 bundle ID, 버전 번호 및 표시 이름과 같은 애플리케이션에 대한 구성 정보가 포함되어 있습니다. |
Launch images(Default.png ) - deprecated |
(필수 / 권장) 애플리케이션의 초기 인터페이스를 특정 방향으로 보여주는 하나 이상의 이미지. 시스템은 애플리케이션이 창과 사용자 인터페이스를 로드할 때까지 제공된 시작 이미지 중 하나를 임시 배경으로 사용합니다. 응용 프로그램에서 시작 이미지를 제공하지 않으면 응용 프로그램이 시작되는 동안 검정색 배경이 표시됩니다. |
MainWindow.nib |
(권장) 응용 프로그램의 기본 nib 파일 에는 응용 프로그램 시작 시 로드할 기본 인터페이스 개체가 포함되어 있습니다. 일반적으로 이 nib 파일에는 응용 프로그램의 기본 창 개체와 응용 프로그램 delegate object 의 인스턴스가 포함되어 있습니다 . 다른 인터페이스 객체는 추가 nib 파일에서 로드되거나 애플리케이션에서 프로그래밍 방식으로 생성됩니다. (메인 nib 파일의 이름은 파일의 NSMainNibFile 키에 다른 값을 할당하여 변경할 수 있습니다 Info.plist |
Settings.bundle |
Settings bundle은 설정 애플리케이션에 추가하려는 애플리케이션별 기본 설정이 포함된 특별한 유형의 플러그인입니다. 이 번들은 기본 설정을 구성하고 표시하기 위한 속성 목록 및 기타 리소스 파일을 포함합니다. |
Custom resource files | 현지화되지 않은 리소스는 최상위 디렉토리에 배치되고 현지화된 리소스는 애플리케이션 번들의 언어별 하위 디렉토리에 배치됩니다. 리소스는 nib 파일, 이미지, 사운드 파일, 구성 파일, 문자열 파일 및 애플리케이션에 필요한 기타 사용자 지정 데이터 파일로 구성됩니다. |
https://medium.com/banksalad/user-defaults-for-testing-ios-application-a492c52cd87f
https://developer.apple.com/documentation/foundation/bundle
https://woongsios.tistory.com/92
https://nshipster.co.kr/bundles-and-packages/