写点什么

iOS 性能优化 — 三、安装包瘦身

用户头像
iOSer
关注
发布于: 2020 年 10 月 26 日
iOS性能优化 — 三、安装包瘦身

上篇文章为大家讲解了卡顿监控及处理,这篇文章继续为大家讲解下 iOS 安装包瘦身思路。


  • 瘦身指导原则

  • 常规瘦身方案压缩资源删除无用/重复资源删除无用代码

  • 非常规瘦身方案

  • 脑图借鉴


瘦身指导原则


总体指导原则为:压缩资源、删除无用/重复资源、删除无用代码、通过编译选项进行优化。


常规瘦身方案


压缩资源


项目中资源包括图片、字符串、音视频等资源。由于项目中图片比较多,所以资源压缩一般会从图片入手。在把图片加入到项目中时候需要采用tinypng或者 ImageOptim 对图片进行压缩;另外,可以通知设计,对切图进行压缩处理再上传;不需要内嵌到项目中的图片可以改为动态下载。


  • png,jpg,gif 可以替换成 webp

  • 动画图片可替换为 lotties、APNG

  • 小图或表情图可替换为 iconFont

  • 大图可替换为 svg


删除无用/重复资源


删除无用的资源。项目中主要以删除图片为主:


  • 图片用 2x 和 3x 图就可以,不要用 1x 图。

  • 可以用 LSUnusedResources 搜索出未使用的图片然后删除之。注意:该软件搜索出来的图片有可能项目中还在用,删除之前需要在工程中先搜索下图片是否有使用再确认是否可以删除。


删除无用代码


删除无用类和库:可以用 WBBladesForMac 来分析,注意:通过字符串调用的类也会检测为无用类。


非常规瘦身方案


1、Strip :去除不必要的符号信息。

-Strip Linked Product 和 Strip Swift Symbols 设置为 YES,Deployment Postprocessing 设置为 NO,发布代码的时候也需要勾选 Strip Swift Symbols。


  • Strip Debug Symbols During Copy 和 Symbols Hidden by Default 在 release 下设为 YES

  • Dead Code Stripping 设置为 YES

  • 对于动态库,可用strip -x [动态库路径] 去除不必要的符号信息


2、Make Strings Read-Only 设为 YES。

3、Link-Time Optimization(LTO)release 下设为 Incremental。WWDC2016 介绍编译时会移除没有被调用的方法和代码,优化程序运行效率。

4、开启 BitCode

5、去除异常支持。不能使用 @try @catch,包只缩小 0.1M,效果不显著。

Enable C++ Exceptions 和 Enable Objective-C Exceptions 设为 NO,Other C Flags 添加-fno-exceptions

6、不生成 debug symbols:不能生成 dSYM,效果非常显著。

Generate debug symbols 选项 release 设置为 NO


脑图借鉴


参考文档:

iOS 安装包瘦身 (上篇)

iOS 安装包瘦身(下篇)

https://github.com/wuba/WBBlades

京东商城iOS瘦身

微信iOS瘦身


资料推荐


如果你正在跳槽或者正准备跳槽不妨动动小手,添加一下咱们的交流群1012951431来获取一份详细的大厂面试资料为你的跳槽多添一份保障。



用户头像

iOSer

关注

微信搜索添加微信 mayday1739 进微信群哦 2020.09.12 加入

更多大厂面试资料进企鹅群931542608

评论 (1 条评论)

发布
用户头像
mark
2020 年 11 月 19 日 00:16
回复
没有更多了
iOS性能优化 — 三、安装包瘦身