App Thinning对于iOS瘦身的作用

1.App Thinning: App Slicing, Bitcode, and On Demand Resources

App Thinning: App Slicing, Bitcode, and On Demand Resources是WWDC 2015大会上提出的。因此支持iOS9及以上的项目

App Slicing工作原理:

把App安装包上传到App Store后,Apple分析处理服务会自动对安装包切割为不同的应用变体,用户下载安装包时,系统会根据设备型号下载对应的应用变体。也就是根据目标设备加载asset catalog 中的特定的图片资源(注:只有Assets.xcassets内的图片文件有效,在bundle的中图片是无效的)。(例:iPhone7 plus只加载3x图)。根据目标设备分配所需的加载可执行体系结构。(例: iPhone5(真机32位处理器)加载armv7s架构)。

Bitcode工作原理:

是Xcode编译打包的一种中间码,在包含Bitcode配置的程序被上传到App Store之后,App Store也可以对其进行编译和链接。同时,Bitcode允许苹果后期重新优化程序的二进制执行文件。苹果会根据下载应用的用户手机指令集类型生成该指令集的二进制文件,进行下发下载。
开启Bitcode之后,用户在App Store下载的包体积可以小一些。需要注意的是:开启Bitcode之后,集成的其他第三方库也需要全部支持Bitcode。

On Demand Resources工作原理:

App不是包含整个资源库,可以根据需要下载或删除其中的一部分。通过将代码段标记为ODR,开发人员将能够指定在什么时候需要什么代码。这些部分在需要时会自动从App Store下载,而在不再需要时会删除。
产生的用户体验:
应用程序尺寸较小,因此应用程序下载速度更快,从而改善了首次启动体验。
用户浏览您的应用程序时,可根据需要在后台下载按需资源。
当不再需要按需资源并且磁盘空间不足时,操作系统将清除它们。

2.Bitcode实践及总结

总结:经实践Bitcode确实能减小包体积,主要是减小代码段和数据段大小,总体大概能减小5%左右。但是将项目中每一个三方库都改成支持bitcode是很艰辛的事情。

3.On Demand Resources(ODR)

支持的资源类型:

各种格式音频文件、各种格式图片文件、bundle文件、json文件、plist文件、xib文件、storyboard文件、字体文件等。

不同类型tag来绑定资源,分别为:

1.初始安装tag(Initial install tags)
只有在初始安装tag下载到设备后,app才能启动。这些资源会在下载app时一起下载。这部分资源的大小会包括在App Store中app的安装包大小。如果这些资源从来没有被NSBundleResourceRequest对象获取过,就有可能被清理掉。
2.按顺序预获取tag(Prefetch tag order)
在app安装后会开始下载tag。tag会按照此处指定的顺序来下载。
3.按需下载tag(Dowloaded only on demand)
当app请求一个tag,且tag没有缓存时,才会下载该tag。

大小限制:

每个tag下的资源总计大小不能超过2GB。按需加载资源的总计大小不能超过20GB。一个tag的理想大小是不超过64MB。这能很好地平衡下载速度和本地存储大小,当设备的存储空间不足时可以进行清理。

4.On Demand Resources实践及总结

使用Downloaded Only On Demand Tags通过远程加载资源文件(资源文件是Assets.xcassets中的部分图片文件,项目中一些mp3文件)调试看效果,能减小体积。线上调试上传AppStore,通过testflight下载的版本,但是发现通过苹果服务器下载资源特别慢。
本地打包,使用ODR之前:239.8M
本地打包,使用ODR之后:216M
使用ODR,上传App Store版本:228M

请教了公司其他事业部的老师,他们项目都用了ODR并上线使用了一段时间。做了记录。

  • 请教了老师A,他们项目(用了一个模块做的实验,资源比较小就几兆)把ODR上线了一段时间,目前已经把ODR下架,原因:
    1)容易引起崩溃。崩溃率大概有千分之五。
    2)不能增量更新。
  • 请教了老师B,他们的项目把ODR上线了几个月,目前的问题:
    1)苹果的cdn不算稳定,有下载失败的概率,关键路径资源建议不用它。
    2)版本之间的增量更新用它不好处理。

探索ODR目前的一个总结:

1)苹果cdn不稳定,关键路径资源不建议使用,如必要的Assets.xcassets中资源、必要的音频资源等。
2)如果资源较大,不要使用ODR,通过苹果服务器会比较慢。
3)增量更新有一些问题,很难处理。
4)有奔溃的情况。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容