iOS之开发的SDK(.framework)瘦身

一.说明

项目需求:最近开发的SDK,要提供给其他公司使用, 但是开发后的.framework的大小为3M. 但是某程APP不愿意,说包太大,要瘦身.所以,只能网上找资料.下面说说我的的做法,亲测试可以的.我一篇博客已详细介绍了开发SDK包的过程:iOS之开发SDK(.framework和.bundle)(包括支持ATS和ssl双向验证)

1.1 Generate Debug Symbols
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.

设置Generate Debug Symbols 为NO. 可以减少30%左右的体积.所以这个选项很重要.

image
1.2: 设置Optimization Level下的Release模式为:Fastest,Smallest[-Os] .这是Xcode上默认的,但我们要知道,意思是开启不增加代码大小的全部优化,并让可执行文件尽可能小.
image

经过上面的设置,我的.framework有3M减到了1.8M.

1.3: 删除无用代码,设置Dead Code Stripping为YES,去掉冗余代码即代码被定义但未被使用.
image

我原来在Architectures中加入了armv7s. 现在我将armv7s删除,重新编译,可以减少三分之一的体积.framework包由原来的1.8M减到1.2M.

指令集:armv6 : iPhone,iPhone2,iPhone3G,第一代和第二代iPod Touch; armv7:iPhone4,iPhone4S; armv7s:iPhone5,iPhone5C; arm64:iPhone5S

指令集是向下兼容的,所以设置了arnv7是可以在armv7s的设备上运行的.

image
1.4: 删除framework中无用mach.(注:由于本人很懒,该方法没试过,不过该方法是可信的).

点击打开链接

1.5: ipa缩小文件体积

点击打开链接

1.6: 自己封装,尽量不要用第三方的.

个人推荐所有纯代码手写. 我之前用的网络请求是AFN,那么如果自己封装网络请求. 代码量是不是会减小. 最后的sdk包的体积也会变低.

1.7: 使用HTML5来替换原生的页面

我请教过我同行, 他告诉我他们开发的所有sdk全都是使用HTML5开发. 但是并不知道使用HTML5开发后的sdk包和使用原生的sdk包那个大. 这里给出建议:我没有测试过H5开发和原生开发后的sdk包谁大, 但是 如果你公司有条件的话, 建议还是使用H5来开发SDK包.

推荐阅读更多精彩内容