본문 바로가기
iOS

[iOS] App Bundle

by thoonk: 2021. 5. 14.

iOS 앱 번들에 관한 내용을 기록합니다.

 

Bundle

  • 실행가능한 코드와 관련 리소스(앱 아이콘, 이미지 등)를 한 공간에 묶는 디렉토리 모음

Application Bundles

  • 개발자들에 의해 생성되는 가장 흔한 번들
  • 앱이 정상적으로 작동하기 위해 필요한 모든 것들
  • 플랫폼에 따라 상세한 구조는 다르지만 번들을 사용하는 방법은 동일하다.

Application Bundle에 포함되어 있는 파일들

  • Info.plist file: 앱에 대한 구성(configuration) 정보(bundle ID, version number 등)를 포함한 파일
  • Excutable: 모든 앱은 실행 가능 파일이 있어야 하고 앱의 메인 진입점과 정적으로 앱 타겟에 연결된 코드가 포함한다.
  • Resources files: 앱의 실행가능한 파일 밖에 데이터 파일로 존재한다. 일반적으로 이미지, 아이콘, 사운드, nib 파일, 문자열 파일, 구성 파일 등의 것들로 구성된다. 대부분의 리소스는 특정 언어와 지역에 따라 localized될 수 있으며 localized된 파일은 lproj 확장자를 가진 파일로 저장된다.
  • 거의 대부분 옵셔널하지만 항상 그런 것은 아니다. 예를 들어 iOS앱은 보통 추가적인 아이콘 이미지를 요구하기도 한다.
  • Other support files: 커스텀 데이터 리소스를 iOS 앱 번들에 포함할 수 있지만 커스텀 프레임워크 또는 플러그인은 포함할 수 없다.

iOS App Bundle structure

프로젝트 템플릿은 아이폰 또는 아이패드 앱의 번들에 대한 대부분의 필요한 작업을 Xcode에 의해 제공한다. 하지만 앱 번들 구조에 대한 이해는 커스텀 파일을 어디에 배치해야할지 결정하는데 도움을 준다.

iOS 앱의 번들 구조는 모바일 기기의 필요에 더 초점이 맞춰져 있다. 디스크 공간을 절약하고 파일 접근을 단순화하기 위해 적은 수의 외부 디렉토리가 있는 비교적 평평한 구조를 사용한다.

일반적인 iOS 앱 번들은 최상위 번들 디렉토리에서 앱 excutable과 앱에서 사용되는 리소스(앱 아이콘, 이미지, localized된 내용)로 구성된다.

아래는 MyApp이라는 앱의 구조이다. 서브 디렉토리로 존재하는 파일들은 localized 파일이다. 하지만 추가 서브 디렉토리에 리소스 또는 관련 파일을 추가할 수 있다.

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, and MySettingsIcon.png)

  • 앱 아이콘은 앱을 표시하는데 사용된다. 예를 들어 홈 스크린, 검색 결과 그리고 설정에서 앱이 앱의 아이콘으로 표시된다. 대부분의 경우 앱 아이콘을 꼭 포함해야 한다.

Info.plist (필수)

  • bundle ID, 버젼 번호 등 앱에 대한 구성(configuration) 정보를 포함하고 있는 파일이다.

Launch images(Default.png)

  • 앱의 시작 인터페이스를 보여주는 이미지이고 시스템은 제공된 런치 이미지 중 하나를 앱이 윈도우와 유저 인터페이스를 로드할 동안 임시로 사용한다. 만약 임시 런처 이미지가 없다면 검은 화면이 보여진다.

MainWindow.nib

  • 앱의 main nib file은 앱 런치 시간에 앱을 로드하기 위한 기본 인터페이스 객체를 포함한다. 보통 앱의 메인 윈도우 객체와 앱 델리게이트 객체를 갖고 있다.

Settings.bundle

  • 앱의 application-specific preferences를 포함하는 특별한 타입의 플러그인이다. 이 번들은 property list와 구성하기 윈한 다른 리소스 파일이 포함되어 있고 preference를 보여준다.

Custom resource files

  • non-localized 리소스들은 최상위 디렉토리에 위치하고 localized 리소스는 language-specific 하위 디렉토리에 위치한다.

정리하자면, iOS App Bundle은 코드와 리소스 디렉토리의 구조를 통해 개발자가 앱 만드는 것을 도와준다.

이 구조는 코드나 리소스의 예측가능한 로딩과 지역화 기능을 가능하게 해준다.

 

부족한 점은 피드백해주시면 감사합니다!

 

참고:

 

Bundle Structures

Bundle Structures Bundle structures can vary depending on the type of the bundle and the target platform. The following sections describe the bundle structures used most commonly in both macOS and iOS. Note: Although bundles are one way of packaging execu

developer.apple.com

 

'iOS' 카테고리의 다른 글

[iOS] Notification Center  (0) 2021.05.27
[iOS] Foundation  (0) 2021.05.22
[iOS] FSCalendar Custom Header Swift  (2) 2021.03.10
[iOS] Firebase와 Google 로그인 연동하기  (0) 2021.02.02
[iOS] Apple 로그인 구현  (2) 2021.02.01

댓글