美文网首页iOS开发
iOS 应用瘦身实践记录

iOS 应用瘦身实践记录

作者: 十三_Black | 来源:发表于2019-01-30 12:59 被阅读227次

    \color{#ff00ff} { IPA包瘦身变化: 83 M ---> 50M以下 }

    1、配置编译选项

        generate debug symbols  = YES
    

    这个会设置会跳过断点,可以在 release下设置为NO(可能会影响CrashReporter的使用),但我试的没有什么变化 依旧是83 M

    2.舍弃部分架构

    现在我们项目的架构为  armv7s、armv7、arm64
    

    模拟器 32 为处理器 i386架构(iPhone5,iPhone5s以下的模拟器)
    模拟器 64 为处理器 x86_64架构(iPhone6以上的模拟器)
    模拟器 32 为处理器 armv7或者 armv7s架构(iPhone4真机/armv7, iPhone5,iPhone5s真机/armv7s)
    模拟器 64 为处理器 arm64架构(iPhone6以上的真机)

    架构选择.png
    舍弃 armv7后 体积缩小为 62.1 M,如果你们机型统计中有iPhone4用户那就谨慎使用,可以和领导沟通后选择处理方案。

    3、dead code stripping 去除被定义但未被调用的代码

    dead code stripping.png
        dead code stripping = YES 
    

    设置后 体积缩小为 60.7 M

    4、压缩 Images.xcassets 下的图片资源

    图片压缩之后 体积缩小为 56.8 M

    之所以压缩图片,是因为我在解压IPA包查看包内容时,发现这里的图片资源所占体积还是挺大的,于是也处理了一下这里的资源,这块可以让UI给压缩好的图片也可以自行选择压缩工具,我使用的是一个在线工具,https://tinypng.com/ 效果挺好,能压缩 70%左右,就是每次只能压缩20张。

    5、压缩部分其他资源图片

    图片压缩之后 体积缩小为 52.6 M(这里只压了其中一部分)

    我们项目是组件化开发的,在网上搜索图片资源大小是不占IPA包体积的,我有点好奇,所以也尝试着压缩了一些图片,发现影响还蛮大,可能是因为我们垃圾图片比较多。另外推荐一款不错的垃圾图片检测(https://github.com/onevcat/FengNiao),他能检测出未使用的图片资源。效果挺好,但也有一些检测不到,或者有些图片是通过拼接使用的 [NSString stringWithFormat:@"xxx_%ld",1]; 这时候可能也会被误认为未使用,不过检测之后可以查看检测的结果选择性的移除。

    6、去除符号信息(xcode默认处理)

    strip debug symbols during copy 和 symbols hidden by default 在release版本应该设为yes,可以去除不必要的调试符号。symbol hidden by  default 会把所有的符号定义为 private extern。设了后会缩小体积
    debug 下 设置为 NO
    release 下 设置为 YES
    
    strip debug symbols during cop  
        debug = NO, release = NO
    
    symbols hidden by default     
        debug = NO, release = YES
    

    7、strip linked product : debug 下设为NO,release下设为 YES,用语release模式下缩减APP的大小(xcode默认处理)

    strip linked product 
      debug = NO, release = YES
    

    8、Optimization Level (xcode默认处理)

    release下选择 Fastest Smalllest,
    

    相关文章

      网友评论

        本文标题:iOS 应用瘦身实践记录

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