iOS - 项目优化之 轻量化包大小

1.资源文件的优化

图片

首先,找到自己打包后的ipa,然后右键,打开方式选择归档实用工具,就会解压出来一个文件夹,在Payload文件夹中找到当前ipa的app文件(基本就是和这个ipa名字一样的文件,app后缀系统默认隐藏),右键显示包内容,进入到文件夹内,按照大小进行排序,你会发现所有的资源,首先对图片进行优化,图片主要的大小应该维持到200k以内,需要采用无损压缩。图片压缩推荐使用ImageOptim。
压缩图片 不重要的图片可适当采用 8bit PNG图片

音频

  • 压缩音频,尽可能使用AAC或者MP3格式,并且使用一个较低的码率。通常44.1khz的码率有点浪费,降低一定的码率也不会丢失多少音质

视频

  • 视频也可以使用类似于音频的处理方法,音视频的压缩可以很大程度的压缩,但是要注意压缩的格式,是不是会增加编解码的负担,这要权衡考虑。

Assets

检查bundle中的无用文件,不要打包到app或者静态库中。可以点击文件,在右侧的file inspector里面的target membership中取消勾选;或者在build phase里面的Copy Bundle Resources中去掉。
确定 dead code(代码被定义但从未被调用)被剥离,build setting 里 DEAD_CODE_STRIPPING = YES。 去掉冗余的代码,即使一点冗余代码,编译后体积也是很可观的。

2.代码部分优化

通过appcode 打开对应的工程文件 选择 Code - > inspect Code 分析代码,去掉无用的引用及代码。(appcode真的很强大,连拼写错误都能分析出来,但是就是长的像安卓看起来很丑)

3.分析可执行文件

  • 使用link map
    XCode开启编译选项Write Link Map File
    XCode -> Project -> Build Settings -> 搜map -> 把Write Link Map File选项设为yes
    在 编译后的工程文件夹可以找到 命名为 xxxlinkmapxxx.txt的文件(查找方式为,Winodw - Project - derived data - build - Intermediates -xxx.build - 对应debug或者Release文件下)分析 该txt文件,可以得到项目编译后各个模块生成的.o文件在可执行文件中的组成。
  • 如何分析
    本文采用node + js 的方式分析。 js代码地址https://gist.github.com/bang590/8f3e9704f1c2661836cd 使用方法,node js路径 xxlinkmapxxx.txt 路径 -hl 分析出来 过大的可以考虑缩减和替换。

4.编译选项

  1. 编译器优化级别
    Build Settings->Optimization Level有几个编译优化选项,release版应该选择Fastest, Smalllest,这个选项会开启那些不增加代码大小的全部优化,并让可执行文件尽可能小。
  2. 去除符号信息
    Strip Linked Product / Deployment Postprocessing / Symbols Hidden by Default 在release版本应该设为yes,可以去除不必要的调试符号。Symbols Hidden by Default会把所有符号都定义成”private extern”,详细信息见官方文档。
    这些选项目前都是XCode里release的默认选项,但旧版XCode生成的项目可能不是,可以检查一下。其他优化还可以参考官方文档—CodeFootprint.pdf

还有一些其他可选项可以使用,比如 精简代码,去除无用代码,整合冗余代码,修改类/方法名长度等等

大致上的轻量化方案有如下:


image.png

你可能感兴趣的:(iOS - 项目优化之 轻量化包大小)