App Store 包大小那些事

背景

可以从 App Store 上看到,头条的包大小已经达到了 137M,由于近期即将接入 Flutter,还会增加 16M,这样一来就会突破 150M 的限制,导致用户无法通过 4G 下载,从而一定程度上影响新用户的积累。

方案

头条在之前的技术博客中已经分享过如何解决包大小问题,当这些常规的方案已经尝试过以后,如何进一步压缩包大小呢?大概有以下几个思路:

  1. 组件上的持续优化,公司内强制规定一个通用库。比如图片库全部使用自研框架,并强制下线 SDWebImage、YYImage 等就可以了。
  2. 业务上的持续优化,无用业务定期推动下线,大体积业务库自查优化,否则代码量只增不减,神仙也救不了包大小。

以上两点是长期工作,短期内收益有限。有同事还提出了下面几个骚操作:

  1. 启用bitcode
  2. 砍掉对 iPhone5c 及以下设备的支持,包大小能减少一半。
  3. 成为苹果关系户,支付宝微信等app包大小大幅超过150MB,但4G下还是能下载。

逐步分析一下这几条。

启用 bitcode

启用 bitcode 作用并不大。一个很常见的误区是认为使用 bitcode 能优化包大小。实际上 bitcode 和包大小半毛钱关系都没有,它仅仅是把编译的最后一步留给苹果,这样苹果就可以在优化编译器后,再次将我们的应用打包,从而让历史应用也能享受到新技术。

这就好比饭店原来是把菜做好了,等顾客来了以后直接上菜。现在厨师长说:“大家买好原材料”,万一哪天我们有了新的菜谱,同样的原材料就能做出更好吃的菜,用户就经常光顾我们这里了。

放弃 armv7 指令集的支持

top Created with Sketch.