美文网首页iOS
iOS安装包瘦身

iOS安装包瘦身

作者: 旅途的喵 | 来源:发表于2019-06-15 18:35 被阅读0次

    资源优化

    删除无用图片

    删除无用图片的过程,可以概括为下面这 6 大步。

    1. 通过 find 命令获取 App 安装包中的所有资源文件,比如find > /Users/daiming/Project/-name。
    2. 设置用到的资源的类型,比如 jpg、gif、png、webp。
    3. 使用正则匹配在源码中找出使用到的资源名,比如 pattern = @"@"(.+?)""。
    4. 使用 find 命令找到的所有资源文件,再去掉代码中使用到的资源文件,剩下的就是无用资源了。
    5. 对于按照规则设置的资源名,我们需要在匹配使用资源的正则表达式里添加相应的规则,比如 @“image_%d”。
    6. 确认无用资源后,就可以对这些无用资源执行删除操作了
      推荐工具
      LSUnusedResources LSUnusedResources.gif

    资源压缩

    就是在不损失图片质量的前提下尽可能地作压缩。目前比较好的压缩,将图片转成 WebP。WebP 是 Google 公司的一个开源项目
    例如无损压缩模式

    cwebp -lossless original.png -o new.webp
    

    WebP 在 CPU 消耗和解码时间上会比 PNG 高两倍所以还需要在性能和体积做取舍

    资源文件云端下载

    云端下载的策略为:
    (1)在若干时机尝试下载zip图片包,对zip包进行版本判断,若云端有更新版本,则根据屏幕是3x还是2x,下载对应的zip包,解压存入沙盒中
    (2)在读取图片时,首先从bundle中读取,若失败,则从沙盒中读取,若依然失败,则将该图片当作一个网络图片进行请求,确保图片能被展示。

    编译选项优化

    • LTO,即Link Time Optimization。
      苹果在2016年的WWDC What’s new in LLVM中详细介绍了这一功能。LTO能带来的优化有:
      (1)将一些函数內联化
      (2)去除了一些无用代码
      (3)对程序有全局的优化作用
      在build setting中开启Link-Time Optimization为Incremental,经测试可缩减安装包大小500KB左右。
    • Strip Link Product设成YES
    • Make Strings Read-Only设为YES
    • 去掉异常支持,Enable C++ Exceptions和Enable Objective-C Exceptions设为NO,并且Other C Flags添加-fno-exceptions

    可执行文件优化(代码瘦身)

    可执行文件就是 Mach-O 文件,其大小是由代码量决定的。通常情况对可执行文件进行瘦身,就是找到并删除无用代码的过程
    首先,找出方法和类的全集;
    然后,找到使用过的方法和类;
    接下来,取二者的差集得到无用代码;
    最后,由人工确认无用代码可删除后,进行删除即可。
    我们可以通过分析 LinkMap 来获得所有的代码类和方法的类和方法的信息
    通过 AppCode 找出无用代码

    LinkMap .png

    参考文章
    https://www.jianshu.com/p/a3151dfebc9c
    https://time.geekbang.org/column/article/88573
    https://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207986417&idx=1&sn=77ea7d8e4f8ab7b59111e78c86ccfe66&3rd=MzA3MDU4NTYzMw==&scene=6#rd

    相关文章

      网友评论

        本文标题:iOS安装包瘦身

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