App thinning 이란?

zeke·2021년 7월 5일
1

iOS

목록 보기
1/2
post-thumbnail
post-custom-banner

https://help.apple.com/xcode/mac/current/#/devbbdc5ce4f 글을 번역하였습니다. (오역 된 부분이 있을 수 있으니 참고하시길 바랍니다.)

Overview

App store 및 운영 체제는 사용자의 기기 및 운영체제 버전에 맞게 app delivery를 조정하여 최소한의 설치공간을 사용할 수 있도록 iOS, tvOS, watchOS앱들의 설치를 최적화합니다.
App thinning이라고 불리는 최적화를 통해 device의 기능 대부분을 사용하고 최소 디스크 공간을 차지하며 향후 Apple에 의한 업데이트들을 수용할 수 있는 앱을 만들 수 있습니다.
더 빠른 다운로드와 더 많은 공간은 더 나은 사용자 경험을 제공합니다.

App thinning에는 슬라이싱(slicing), 비트코드(bitcode), 주문형 리소스(on-demand resource)가 있습니다.

1. Slicing

슬라이싱은 다양한 기기와 운영체제 버전에 대하여 여러가지 app bundle의 변형(variants)을 생성하고 전달하는 과정입니다.
변형(variants) 은 실행가능한 아키텍쳐, 리소스만 포함합니다.
우리는 앱의 전체 버전을 계속 개발하고 앱스토어 커넥트에 업로드하게되면 앱스토어는 앱이 지원하는 기기 및 운영체제 버전에 따라 다양한 변형(variants) 을 생성하고 제공합니다.
앱스토어에서 각 변형에 적합한 이미지, GPU리소스, 기타 데이터를 선택할 수 있도록 asset catalog를 사용합니다.
사용자가 앱스토어를 통해 앱을 설치하게되면 사용자의 기기 및 기기의 운영체제 버전에 맞춰 변형(variants) 이 다운로드가 됩니다.

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

참고
iOS, tvOS 9.0이상에서만 슬라이스된 앱을 지원합니다.
그 아래버전은 앱스토어에서 universal variants를 제공합니다.
universal variants는 Mobile Device Management(MDM), Apple School Manager, Apple Business Manager를 통해 대량구매 한 앱 혹은 iTunes 12.6이하의 버전을 사용하여 다운로드 한 앱을 통해서도 제공됩니다.




2. Bitcode

비트코드는 컴파일된 프로그램의 중간표현 입니다. (기계언어도 아니고 그렇다고 사람이 읽을 수 있는 코드도 아닌 중간단계의 코드)
비트 코드가 포함 된 앱스토어 커넥트에 업로드 한 앱은 앱스토어에서 컴파일 및 연결된다.

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

이 부분은 좀 더 찾아보니 제드님의 블로그에서 구체적인 사례를 찾을 수 있었습니다.
과거 새로운 아이폰이 64비트 칩셋으로 바꾼적이 있는데 이 때 bitcode가 적용되어있지 않는 시절이라 앱 개발자들은 코드를 수정하고 앱을 다시 컴파일하여 제출했다고 합니다. bitcode가 적용됬더라면 새로운 아키텍쳐로 컴파일 할 수 있도록 알아서 최적화를 했을텐데 말이죠. ( 출처: https://zeddios.tistory.com/655 )

iOS앱의 경우 비트코드가 default이지만 optional입니다. watchOS, tvOS의 앱들은 비트코드가 필요합니다.
비트코드를 제공하려면 앱 번들의 모든 앱과 프레임워크에 전부 비트코드가 포함되어야 합니다.

Xcode는 기본적으로 앱의 symbol을 숨기므로 Apple에서 읽을 수 없습니다. 앱스토어 커넥트에 앱을 업로드할 때 symbol을 포함할 수 있는 옵션이 있습니다.
symbol을 포함하면 애플에서 TestFlight나 App Store를 통해 앱을 배포할 때 앱에 대한 충돌보고서를 제공 할 수 있습니다.




3. On-Demand Resuources (iOS, tvOS)


주문형 리소스는 이미지나 사운드같은 리소스를 키워드로 태그할 수 있고 태그별로 그룹을 요청 할 수 있다.
앱스토어는 Apple 서버의 리소스를 호스팅하고 다운로드를 관리합니다. 또한 앱스토어는 주문형 리소스를 분할시켜 앱의 변형을 더욱 최적화합니다.

주문형 리소스의 특징

  • App sizes are smaller so apps download faster, improving the first-time launch experience.

  • On-demand resources download in the background, as needed, while the user explores your app.

  • The operating system purges on-demand resources when they are no longer needed and disk space is low.

예를들면, 사용자가 게임앱을 실행할 때 사용자의 레벨보다 더 높은 상위 레벨의 리소스들은 필요하지 않기 때문에 미리 갖지 않아도 됩니다. 상위 레벨에 근접할 때 리소스를 요청하고 사용자보다 낮은 레벨에 필요한 리소스들은 더 이상 필요없으므로 삭제하여 앱 사이즈를 효율적으로 관리 할 수 있습니다.
또 다른 예는 사용자가 앱을 다운로드하여 기본 기능만 사용하다가 인앱 구매를 할 때 리소스를 요청하는 경우도 있습니다.

profile
iOS & Swift
post-custom-banner

0개의 댓글