iOS App 安装包瘦身指南

以下列出了安装包瘦身的无脑执行流程,其中“奇技淫巧”部分为选做题

  • 资源优化

    • 删除无用图片

    • 删除重复资源
    • 压缩图片资源

      • 使用ImageOptim无损压缩图片
      • 使用TinyPNG有损压缩图片

        • TinyPNG非常好用强烈推荐
        • 使用的时候直接执行 tinypng *.png -k token 脚本即可
    • 奇技淫巧

      • 用LaunchScreen.storyboard替换启动图片
      • 本地大图片都使用webp
      • 资源按需加载,非必要资源都等到使用时再从服务端拉取
  • 编译选项优化

    • Optimization Level在release状态设置为Fastest,Smallest
    • Strip Debug Symbols During Copy在release状态设置为YES
    • Strip Linked Product在release状态设为YES
    • Make String Read-Only在release状态设为YES
    • Dead Code Stripping在release状态设为YES
    • Deployment PostProcessing在release状态设为YES
    • Symbols hidden by default在release状态设为YES
  • 可执行文件优化

    • 使用LinkMap分析库的使用情况
    • 三方库优化

      • 删除不使用的三方库
      • 功能用的少但是体积大的三方库可以考虑自己重写
      • 合并功能重复的三方库
    • 代码分析

      • 用AppCode进行代码扫描
      • 去掉无用的类及文件
      • 清理import
      • 去掉空方法
      • 去掉无用的log
      • 去掉无用的变量
      • 反正把能去掉的都去掉
    • 奇技淫巧

      • 将业务打包成动态库
      • 动态化。将一部分Native界面用Weex重写
      • 去除Swift代码,Swift的标准库是打包在安装包里的,一般都有10M+。然后苹果爸爸说等到Swift Runtime稳定之后会合并到iOS系统里,那时候使用Swift就不会显著增加包大小了
      • 在target->Build Settings->Other Link Flags里添加如下指令,会把TEXT字段的部分内容转移到RODATA字段,避免苹果对TEXT字段的审核限制。当然其实跟安装包瘦身好像没有什么关系,所以除非快不行了否则不建议操作 =。=
    -Wl,-rename_section,__TEXT,__cstring,__RODATA,__cstring
    -Wl,-rename_section,__TEXT,__gcc_except_tab,__RODATA,__gcc_except_tab
    -Wl,-rename_section,__TEXT,__const,__RODATA,__const
    -Wl,-rename_section,__TEXT,__objc_methname,__RODATA,__objc_methname
    -Wl,-rename_section,__TEXT,__objc_classname,__RODATA,__objc_classname
    -Wl,-rename_section,__TEXT,__objc_methtype,__RODATA,__objc_methtype
  • 跟着苹果爸爸走

    • App Thinning

      • 使用xcasset管理图片
    • 开启BitCode
    原文作者:weixin_34364071
    原文地址: https://blog.csdn.net/weixin_34364071/article/details/90323566
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞