美文网首页
IPA包瘦身

IPA包瘦身

作者: 暴躁的小豆子 | 来源:发表于2020-11-19 10:52 被阅读0次

    一些老项目战线比较长的,往往经历很多人的手,如果没有统一规范会存在各种风格的代码,并且ipa包日益增大,本文就来简单说说ipa包的优化,这里我从三个方面来优化 资源优化、可执行文件优化、编译优化

    资源优化

    • 删除无用图片
      工具:LSUnusedResources
      LSUnusedResources.png
      注意点:
      要选中 ignore similar name 防止误删
      [UIImage imageNamed:[NSString stringWithFormat:@"01_0000%d.png",i] 这种情况下01_00004.png没有排除掉,如果没有勾选 就会被干掉
    • 无损压缩图片
      工具 :ImageOptim
      ImageOptim
      3.音视频资源文件、db、plist等文件的删除

    可执行文件优化

    • 删除无用类 通过FindClassUnRefs.py脚本
      -删除无用的代码
      -删除无用/重复的三方库

    编译优化

    • 根据需求去掉不需要使用的指令集
      1、各指令集机型说明(指令集向下兼容)
      (1)armv7:iPhone4,iPhone4s
      (2)armv7s:iPhone5,iPhone5C
      (3)arm64:iPhone5S(以上)
      (4)arm64e:xs/xs max/xr(添加一些新特性)

    2、去掉规则
    (1)如果不需要支持5s以下设备,仅用arm64可以达到最小体积
    (2)如果需要支持5s以下设备,可去掉armv7s,影响只是可能在iPhone5、iPhone5C不能发挥最优性能
    (3)arm64e、arm64和只包含arm64编译出来的大小是一样的。

    • Optimization Level
      Release模式为:Fastest,Smallest[-Os] 。这是Xcode上默认的,但我们要知道,意思是开启不增加代码大小的全部优化,并让可执行文件尽可能小。
    • Dead Code Stripping
      删除静态链接的可执行文件中未引用的代码。Debug 设置为NO Release 设置为YES 可减少可执行文件大小。
    • Generate Debug Symbols
      调试符号是在编译时生成的。当Generate Debug Symbols选项设置为YES时,打包会生成symbols 文件。设置为NO则ipa中不会生成symbol文件,可以减少ipa 大小。xcode 默认选择为YES,不建议关闭该选项,可能会影响到app调试
    • Strip Symbol Information
      1、Deployment Postprocessing
      2、Strip Linked Product
      3、Strip Debug Symbols During Copy
      4、Symbols hidden by default
      设置为YES可以去掉不必要的符号信息,可以减少可执行文件大小。Release 设置为YES Debug 设置为NO。

    App thining是苹果官方给出的优化安装包大小的方案。其原理是根据设备的不同来下载安装包中不同的资源,比如iPhone6的手机只需要下载@2x的图片文件,这样可以是下载流量减少。
    App Thinning 有三种方式,包括:App Slicing、Bitcode、On-Demand Resources。
    1.App Slicing,会在你向 iTunes Connect 上传 App 后,对 App 做切割,创建不同的变体,这样就可以适用到不同的设备。
    2.On-Demand Resources,主要是为游戏多关卡场景服务的。它会根据用户的关卡进度下载随后几个关卡的资源,并且已经过关的资源也会被删掉,这样就可以减少初装 App 的包大小。
    3.Bitcode ,是针对特定设备进行包大小优化,优化不明显。

    链接:
    iOS APP安装包瘦身实践
    iOS 脚本查看项目中未使用的类
    iOS 给安装包瘦身

    相关文章

      网友评论

          本文标题:IPA包瘦身

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