项目需求:最近开发的SDK,要提供给公司其他部门使用,但是开发后的.framework的大小为12M。但是某程APP不愿意,说包太大,要瘦身。所以,只能网上找资料。下面说说我的的做法,亲测试可以的。
一、set Generate Debug Symbols to NO
make sure that you set Generate Debug Symbols to NO in your build settings. This can reduce the size of your static library by about 30%.
In your target's build settings look for 'Optimization Level'. By switching that to 'Fastest, Smallest -Os' you'll permit the compiler to sacrifice some speed for size.
(1)、设置Generate Debug Symbols 为NO。可以减少30%左右的体积,所以这个选项很重要。
Generate Debug Symbols 为NO.png(2)、设置Optimization Level下的Release模式为:Fastest,Smallest[-Os] 。这是Xcode上默认的,但我们要知道,意思是开启不增加代码大小的全部优化,并让可执行文件尽可能小。
设置Optimization Level.png经过上面的设置,我的.framework有12M减到了8M。
二、删除无用代码
设置Dead Code Stripping为YES,去掉冗余代码即代码被定义但未被使用。
设置Dead Code Stripping为YES.png三、删除不必的指令集
我原来在Architectures中加入了armv7s。现在我将armv7s删除,重新编译,可以减少三分之一的体积。framework包由原来的1.8M减到1.2M。
指令集:armv6 : iPhone,iPhone2,iPhone3G,第一代和第二代iPod Touch; armv7:iPhone4,iPhone4S; armv7s:iPhone5,iPhone5C; arm64:iPhone5S
指令集是向下兼容的,所以设置了armv7是可以在armv7s的设备上运行的。
设置指令集.png四、删除framework中无用mach
(注:该方法没试过,不过该方法是可信的)
网友评论