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

一,说明.

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

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%左右的体积.所以这个选项很重要.

iOS之开发的SDK(.framework)瘦身_第1张图片

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

iOS之开发的SDK(.framework)瘦身_第2张图片

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

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

iOS之开发的SDK(.framework)瘦身_第3张图片

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

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

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

iOS之开发的SDK(.framework)瘦身_第4张图片

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

点击打开链接

5,ipa缩小文件体积

点击打开链接

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

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

7,使用HTML5来替换原生的页面

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

二,结束语:

由于是领导要求,所以在网上查了一下资料,写了这篇博客.   但是我认识到了一点:并不是所有的程序员都乐意分享经验,一些大公司有一些更好的优化方案,要么是不愿意分享,要么是我们找不到.  尽管写博客抱着的目的不同,但是我们应该对这些作者有着起码的尊重.

(注:作者本人的目的也不是纯的,我也是想在以后的工作,有着一点晋身之本.抱歉啊.但是我一点会将我的经验有效的表达出来,虽然我的语言表达不是很好).
参考:http://blog.csdn.net/fishmai/article/details/49278299

你可能感兴趣的:(iOS-OC)