美文网首页
App Thinning对于iOS瘦身的作用

App Thinning对于iOS瘦身的作用

作者: 彩色大猩猩 | 来源:发表于2020-04-05 18:10 被阅读0次

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)有奔溃的情况。

相关文章

  • App Thinning对于iOS瘦身的作用

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

  • App Thinning

    App Thinning可以译成“应用瘦身”。指的是App store 和操作系统在安装iOS或者watchOS的...

  • Bitcode是什么?

    Bitcode是什么? App Distribution Guide – App Thinning (iOS, w...

  • App Thinning 应用瘦身技术

    转自:http://www.jianshu.com/p/e8d0c998e5c4App Thinning 应用瘦身...

  • APP Thinning

    最近看了一个直播分享介绍的技术 挺好的。app thinning 应用瘦身技术,这个是WWDC 2015 最新分享...

  • iOS App Thinning 实践

    App随着版本迭代、业务扩张、人员更迭、架构变更使项目变得越来越臃肿。废弃的业务代码、冗余无用的类方法和声明、无用...

  • iOS9 App Thinning(应用瘦身)功能介绍

    iOS9 发布后,产生了一个使 App Thinning 无法正常运行的 bug。在iOS9.0.2 版本中,这个...

  • 程序打包发布问题

    一、iOS9新增的Bitcode概念 1、关于App Thinning iOS9之前,用户下载应用都是下载整个ap...

  • Bitcode

    什么是 Bitcode 首先我们需要了解苹果的 App Thinning 计划,该计划对 iOS 和 WatchO...

  • app包大小优化

    1.官方 App Thinning 官方推出的改善App下载进程的技术 因为现在ios设备屏幕尺寸,分辨率越来越多...

网友评论

      本文标题:App Thinning对于iOS瘦身的作用

      本文链接:https://www.haomeiwen.com/subject/ajqpphtx.html