출처

  • 이 포스트는 edwith 부스트코스 iOS 프로그래밍 강좌를 듣고 정리한 포스트 입니다.

Asset Catalog

  • 프로젝트 생성시 Assetes.xcassets 이라는 폴더가 자동 생성, 이 폴더에서 애플리케이션에 사용될 다양한 에셋을 관리, 이를 에셋 카탈로그라고 한다

  • 에셋과 다양한 디바이스의 속성에 대한 파일의 연결(mapping)을 통해서 애플리케이션 리소스에 쉽게 접근할 수 있도록 도와줌

    • 리소스 : 애플리케이션이 실행 중일 때 사용하는 이미지와 음악 파일 등을 말한다
    • 속성 : 디바이스의 특징, 사이즈 클래스, 주문형 리소스, 특정 타입의 정보를 포함하고 있다

에셋 카탈로그 구성

  • Groups : 한 개 이상의 또 다른 그룹이나 에셋을 가질 수 있다

  • Assets : 한 가지 타입의 관련된 속성과 파일들의 집합을 나타낸다

  • Asset name : 에셋에 접근하기 위해 개발자가 정의한 문자열

  • Asset files : 선택한 에셋의 데이터 파일 또는 리소스

  • Attributes : 선택한 그룹, 에셋, 에셋파일의 속성을 나타냄 (속성 인스펙터를 선택하면 볼 수 있다)

  • Asset variations : 선택된 하나의 조각(에셋 파일들의 집합)을 나타냄, 이 조각은 같은 속성 값(value)이 적용되는 단위이다.


에셋 카탈로그의 콘텐츠

  • 에셋 카탈로그의 콘텐츠는 3가지 타입을 갖는다
    • 1) Folders : 에셋 카탈로그 폴더는 다른 그룹 폴터나 에셋 폴더를 포함할 수 있다. 파일시스템의 폴더 이름은 대체적으로 확장자를 갖지 않는다, 그러나 에셋 카탈로그 폴더는 해당 에셋 타입의 확장자가 자동으로 붙는다
    • 2) JSON files : .json 확장자 파일로서 속성에 대한 정보를 포함하고 있다
    • 3) Content files : 리소스 파일을 나타낸다

에셋 카탈로그 폴더의 구조

img

  • Asset catalog folder : 모든 폴더와 파일들을 갖고 있다

  • Group folder : 다른 그룹 폴더나 에셋 폴더를 갖고 있다

  • Asset folder : 리소스 파일들을 갖고 있다


에셋 카탈로그 타입

  • 폴더 타입 : App Icon Type, 확장자 : .appiconset, 애플리케이션의 아이콘
    • 다양한 크기와 해상도의 애플리케이션 아이콘 원본 이미지
  • 폴더 타입 : Catalog Type, 확장자 : .xcassets, 에셋 카탈로그의 최상위 폴더
    • 에셋 카탈로그 폴더 구조의 최상위 폴더, 한 개의 에셋 카탈로그에 하나만 존재할 수 있다
  • 폴더 타입 : Image Set Type, 확장자 : .imageset, 객체들이 사용히는 이미지
    • 이미지 에셋에서 UIImage와 NSImage의 인스턴스에 사용되는 이미지 파일
  • 폴더 타입 : Data Set Type, 확장자 : .dataset, 애플리케이션에서 사용되는 데이터 파일
    • 장치 실행 가능 코드(device-executable code)를 제외한 Xcode에 의해 생성된 모든 종류의 데이터를 포함하는 파일들의 집합
  • 폴더 타입 : Launch Image Type, 확장자 : .launchimage, 애플리케이션의 실행화면 이미지
    • 애플리케이션 실행화면 이미지 (iOS 7.0ㅇ 이하 버전에만 필요, iOS 8.0 버전 이상은 기본적으로 런지 스크린 스토리보드를 사용)

App Thinning

  • 애플리케이션이 디바이스에 설치될 때 앱스토어와 운영체제가 그 디바이스의 특성에 맞게 설치하도록 하는 설치 최적화 기술

  • 앱 시닝(app thinnnig)을 통해 애플리케이션의 설치용량을 최소화하고 다운로드의 속도를 향상 시킬 수 있다

  • 앱 시닝(app thinning)의 기술 구성요소는 슬라이싱(Slicing), 비트코드(bitcode), 주문형 리소스(on-demand resource)가 있다


Slicing

slicing

  • 애플리케이션이 지원하는 다양한 디바이스에 대한 여러 조각의 에플리케이션 번들(app bundle)을 생성하고 디바이스에 알맞은 조각을 전달하는 기술
    • 개발자가 애플리케이션의 전체 버전을 iTunes Connect에 업로드하게 되면, 앱 스토어에는 각 디바이스 특성에 다양한 버전의 조각들이 생성된다
    • 사용자가 애플리케이션을 설치할 때 전체 버전이 아닌 슬라이싱(slicing)된 조각들 중 사용자의 디바이스의 가장 적합한 조각이 다운로드 되어 설치된다
    • 에셋 카탈로그에서 관리하는 이미지들은 자동으로 적용된다
    • 슬라이싱(slicing)은 iOS 9.0 버전 이상만 지원
  • iTunes Conncet : 개발자가 앱 스토어에 판매할 애플리케이션을 제출하고 관리할 수 있도록 도와주는 웹 기반 도구