Contents
  1. 1. What is app thinning?
    1. 1.1. 剪切 Slicing (iOS, tvOS)
    2. 1.2. Bitcode
    3. 1.3. On-Demand Resources (iOS, tvOS) 资源按需

What is app thinning?

原文: https://help.apple.com/xcode/mac/current/#/devbbdc5ce4f

iOS,tvOS,watchOSAppStore和操作系统根据用户设备和操作系统的性能对App进行裁剪优化,并保持最小的影响。
这个优化的过程就是应用瘦身,你可以用最少的空间创建功能齐全持续更新的应用。
更快的下载速度更多的空间安装其他App将带来更好的用户体验。

剪切 Slicing (iOS, tvOS)

Slicing是针对不同设备不同系统创建部署变体应用包的过程。
每个变体只包含当前设备和操作系统所需要的资源和可执行文件。
你需要即系开发上传完整版本的应用到AppConnect
AppStore将会根据不同的设备及操作系统版本创建分发不同的变体。
asset储存图片资源以便AppStore为不同的变体选择资源加载。
当用户安装应用时,将会下载安装一个针对其设备系统版本的变体。

Xcode将会在本地buildrun的时候模拟进行Slicing。当你archive的时候Xcode将会包含所有构建版本并允许你导出变体包。

Bitcode

Bitcode是编译器的一层间接。你上传到AppConnect的打开了Bitcode的App将会在AppStore被编译和链接。包含了Bitcode将会使Apple可以在未来再优化你的应用包而不用再重新上传。

对于iOS应用Bitcode是默认非必须选的。watchOS和tvOS是必选的。如果想要支持Bitcode那么你所有用到的库都要支持Bitcode。

Xcode默认会隐藏你的应用的符号表,所以对于Apple它是不可见的。当你上传你的App到APPConnect的时候你可以选择包含符号表。包含符号表会使Apple为你提供崩溃日志。如果你想要自己手机崩溃日志,那么你可以不上传符号表。你可以在发布应用后下载Bitcode编译后的符号表。

On-Demand Resources (iOS, tvOS) 资源按需

这些资源主要是图片和声音。AppStore将其保存管理在苹果的服务器。AppStore将会按需使用资源优化变体包。

On-Demand Resources提供了更好的用户体验:

  • 应用体积更小,下载更快,提升初次启动速度
  • 资源会在后台下载
  • 操作系统将会清理On-Demand Resources当磁盘资源不够的时候

想要支持On-Demand Resources,可以阅读文档:
On-Demand Resources Guide
https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/On_Demand_Resources_Guide/index.html#//apple_ref/doc/uid/TP40015083
NSBundleResourceRequest
https://developer.apple.com/documentation/foundation/nsbundleresourcerequest

Contents
  1. 1. What is app thinning?
    1. 1.1. 剪切 Slicing (iOS, tvOS)
    2. 1.2. Bitcode
    3. 1.3. On-Demand Resources (iOS, tvOS) 资源按需