App Thinning
前言:周六放松下咯,正巧导师叫我看看iOS9的相关内容,而今天刚好看了苹果官方文档关于App Thinning 的介绍就顺便翻译翻译记录下~
App Thinning可以译成“应用瘦身”。指的是App store 和操作系统在安装iOS或者watchOS的 app 的时候通过一些列的优化,尽可能减少安装包的大小,使得 app 以最小的合适的大小被安装到你的设备上。而这个过程包括了三个过程:slicing, bitcode, and on-demand resources,详细的内容如下
Slicing
App Slicing在节省应用所需资源中发挥着最重要的作用。很多应用需要在不同尺寸的设备上运行,针对这些不同的设备,它们内含不同的独立资源,而大部分是你的设备不需要的。所以App store会针对不同的设备制作不同的“变种App”,当你下载app时候只需要下载不同的“变种app”就可以了。
比如用户使用的是iPhone 5c,它运行的是32位CPU和GPU,并不支持Metal API。但如果用户下载的是一款最新的通用游戏应用,它的二进制中含有64位代码,iPad和“3x”iPhone 6 Plus 资源以及Metal API代码,这些都是你的设备用不上的。它只需要32位代码,“2x”iPhone尺寸资源以及OpenGL图形代码。
Slicing 的主要的工作流程如下:
在 Xcode中,选择好目标设备并且使用 asset catalog 提供多分辨率的图片资源
只有使用 asset catalog 才能正确使Slicing作用于资源文件在模拟器或者设备上编译并运行app
Xcode 会自动构建针对你运行设备的“变种app”,同时也是为了减少编译时间和进行本地的测试
打包app(为了及时发现不同目标设备的配置错误,可以在本地为目标设备导出“变种app“,测试无误后再打包)
上传打包好的app到 iTunes connect
App store 将会为上传的app归档创建不同的“变种app”,具体的“变种app”的数量在Xcode 的project 页面中设置在 iTunes Connect 中, 发布一个预览版给合格的测试者进行测试
测试者通过 TestFlight 下载预览版
TestFlight 会自动根据测试者的设备下载合适的“变种app”
Bitcode (iOS, watchOS)
字节码是一个编译好的程序的中间表示形式。上传到 iTunes Connect 中的包含字节码的app 将会在 App store 中进行链接和编译。苹果会对包含字节码的二进制app进行二次优化,而不需要提交一个新的app版本到app store中。
On-Demand Resources (iOS)
ODR(on-demand resources 随需应变资源)是iOS减少应用资源消耗的另外一种方法。比如多级游戏,用户需要的通常都是他们当前的级数以及下一级。ODR意味着用户可以下载他们需要的几级游戏。随着你的级数不断增加,应用再下载其他级数,并将用户成功过关的级数删掉。
当用户点击应用内容的时候,就会动态从App Store上进行下载,也就是说用户只会在需要的时候占用存储空间。这项功能有趣之处还在于当将这些内容在后台进行下载之后,当存储空间紧张的时候会自动进行删除。