关于iOS 9 的App Thinning

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 流程

Slicing 的主要的工作流程如下:

  1. 在 Xcode中,选择好目标设备并且使用 asset catalog 提供多分辨率的图片资源
    只有使用 asset catalog 才能正确使Slicing作用于资源文件

  2. 在模拟器或者设备上编译并运行app

  3. Xcode 会自动构建针对你运行设备的“变种app”,同时也是为了减少编译时间和进行本地的测试

  4. 打包app(为了及时发现不同目标设备的配置错误,可以在本地为目标设备导出“变种app“,测试无误后再打包)

  5. 上传打包好的app到 iTunes connect
    App store 将会为上传的app归档创建不同的“变种app”,具体的“变种app”的数量在Xcode 的project 页面中设置

  6. 在 iTunes Connect 中, 发布一个预览版给合格的测试者进行测试

  7. 测试者通过 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意味着用户可以下载他们需要的几级游戏。随着你的级数不断增加,应用再下载其他级数,并将用户成功过关的级数删掉。

ODR流程

当用户点击应用内容的时候,就会动态从App Store上进行下载,也就是说用户只会在需要的时候占用存储空间。这项功能有趣之处还在于当将这些内容在后台进行下载之后,当存储空间紧张的时候会自动进行删除。

操作系删除放多余资源流程
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS9 发布后,产生了一个使 App Thinning 无法正常运行的 bug。在iOS9.0.2 版本中,这个...
    OneAPM阅读 3,025评论 0 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,540评论 25 709
  • 一、iPad多任务功能增强 1、全新的多任务界面 在iOS 9中,多任务界面从原来的横向单层排列进化成层叠排列,从...
    刘胜强MT阅读 3,521评论 0 5
  • 由于老公弟弟3月份刚生了宝宝,给我看了8个月孩子的婆婆理所当然的去给他看孩子了。我无助的看看调皮捣蛋的小丸...
    暀镸阅读 209评论 0 0
  • 老妖1963阅读 120评论 0 1