三味猪屋

iOS包大小瘦身方案(一)- iOS安装包构成

要想将iOS安装包瘦身,首先得熟悉iOS安装包的构成,然后根据各个部分逐个优化。
1、iOS安装包构成:
iOS安装包是以后缀名为“ipa”一个压缩包,该压缩包内容大致包含三块内容:可执行文件、资源文件、签名文件
构成如下图:

2、可执行文件构成:
可执行文件是通过编译器、连接器将我们编写的代码、静态库、动态库编译成的文件,大致可分为代码段和数据段
构成如下:

3、可执行文件支持的cpu架构以及安装包大小关系
以“滴滴打车”为例,对比去年3.9.7版本以及最新4.3.10版本
3.9.7版本:



4.3.10版本:



由此可见支持的CPU体系架构越多,对安装包大小成正比例影响。
4、可执行文件各段所占大小
64位架构:



32位架构:



5、第三方SDK大小占比






通过比较不难看出第三方SDK编译出来的可执行文件占比达到62.5%
6、资源文件对安装包的影响
未对图片资源进行无损压缩之后包大小

对图片资源进行无损压缩之后包大小

下图为对我们app中图片资源进行无损压缩的效果:

Tips:
1、查看可执行文件大小:



linkmap.js
2、MachOView使用:
MachOView下载地址
MachOView源码地址
3、ImageOptim使用:
ImageOptim下载地址
4、去除工程中多余的图片资源:
a、脚本
详见链接

1
2
3
4
5
6
7
8
9
#!/bin/sh
PROJ=`find . -name '*.xib' -o -name '*.[mh]'`
for png in `find . -name '*.png'`
do
name=`basename $png`
if ! grep -qhs "$name" "$PROJ"; then
echo "$png is not referenced"
fi
done

b、Unused
Unused
c、LSUnusedResources
LSUnusedResources