개발을 시작하는 이야기

앱 시닝(app thinning) 본문

개발 이야기/Swift

앱 시닝(app thinning)

Teiresias 2022. 3. 20. 18:48

What is app thinning?

App Store 및 운영체제는 사용자의 기기 및 운영체제 버전에 맞게 app delivery를 조정하여 최소한의 설치 공간을 사용할 수 있도록 iOS, tvOS, watchOS앱들의 설치를 최적화 한다.

App thinning이라고 불리는 최적화를 통해 device의 기능 대부분을 사용하고 최소 디스크 공간을 차지하며 향후 Apple에 의한 업데이트들을 수용할 수 있는 앱을 만들 수 있다.

더 빠른 다운로드와 더 많은 공간은 더 나은 사용자 경험을 제공한다.

Slicing (iOS, tvOS)

슬라이싱(Slicing)은 다양한 기기와 운영체제 버전에 대하여 여러 가지 앱 번들의 변형(variants)을 생성하고 전달하는 과정이다. 변형(variants)은 실행 가능한 아키텍처, 리소스만 포함한다.

 

앱을 개발하고 App Store Connect에 업로드를 하면, App Store는 앱이 지원하는 기기 및 운영 체제 버전에 따라 다양한 변형을 만들고 제공하게 된다. AppStore에서 각 변형에 적합한 이미지, GPU 리소스 및 기타 데이터를 선택할 수 있도록 asset catalog를 사용한다. 사용자가 앱을 설치하면 사용자의 장치 및 운영체제 버전에 대한 변형이 다운로드되어 설치된다.

 

Xcode는 개발 중에 슬라이싱을 시뮬레이션하므로 로컬에서 변형을 만들고 테스트할 수 있다. 기기나 시뮬레이터에서 앱을 빌드하고 실행할 때 앱을 슬라이싱 한다. 아카이브를 생성할 때, Xcode는 앱의 전체 버전을 포함하지만 아카이브에서 변형을 내보낼 수 있다.

Bitcode

비트 코드는 컴파일된 프로그램의 중간 표현이다.

비트 코드가 포함된 App Store Connect에 업로드하는 앱은 App Store에서 컴파일 및 연결된다.

비트 코드를 포함하면 Apple에서 앱의 새 버전을 App Store에 제출할 필요 없이 향후 앱 바이너리를 다시 최적화할 수 있다.

사실 위 문구가 이해가 안 갔다. 앱의 새 버전을 제출할 필요 없이 향후 앱 바이너리를 다시 최적화한다는 게 이해가 가지 않았는데
Apple Store에 올릴 때 비트 코드를 활성화 상태로 빌드해서 올리면 Apple에서 32-bit, 64-bit 디바이스 별로 필요한 빌드를 다르게 제공해서 용량을 최소화시켜준다고 한다.

iOS 앱의 경우 비트 코드가 기본값이지만 선택사항 이다. watchOS 및 tvOS 앱들의 경우는 비트코드가 필요하다. 비트코드를 제공하려면 앱 번들의 모든 앱과 프레임워크에 전부 비트코드가 포함되어야 한다.

 

Xcode는 기본적으로 앱의 Symbol을 숨기므로 Apple에서 읽을 수 없다. App Store Connect에서 앱을 업로드할 때 Symbol을 포함할 수 있는 옵션이 있다. Symbol을 포함하면 Apple에서 TestFlight이나 App Store를 통해 앱을 배포할 때 앱에 대한 충돌 보고서를 제공할 수 있다. 

On-Demand Resources (iOS, tvOS)

주문형 리소스(On-Demand Resources)는 이미지나 사운드 같은 리소스를 키워드로 태그 할 수 있고, 태그별로 그룹을 요청할 수 있다. App Store는 Apple 서버의 리소스를 호스팅하고 다운로드를 관리한다. 또한 App Store는 주문형 리소스를 분할시켜 앱을 더욱 최적화한다.

 

주문형 리소스의 특징

  • 앱 크기가 작아져 앱 다운로드 속도가 빨라져 최초 실행이 향상된다.
  • 사용자가 앱을 사용하는 동안 필요에 따라 주문형 리소스가 백그라운드에서 다운로드된다.
  • 디스크 공간이 부족할 때 더 이상 필요하지 않은 주문형 리소스를 제거한다.

예를 들자면 앱은 사용자가 사용자가 뎁스를 이동하는 경우 리소스를 추가로 요청하는 방식으로 앱의 사이즈를 효율적으로 관리한다.

유사하게, 사용자가 인앱 구매를 할 때만 인앱 구매 리소스를 요청하는 방식을 사용한다.

 

참조 : https://help.apple.com/xcode/mac/current/#/devbbdc5ce4f

참조(Bitcode) : https://iphonecodecenter.wordpress.com/2015/10/13/what-is-bitcode/

'개발 이야기 > Swift' 카테고리의 다른 글

StoryBoard를 사용하기  (0) 2022.03.22
@main  (0) 2022.03.21
weak, unowned  (0) 2022.03.19
ARC(Automatic Reference Counting)  (0) 2022.03.18
ViewController  (0) 2022.03.17