前言
项目需求:最近开发的SDK,要提供给其他公司使用, 但是开发后的.framework的大小为3M. 但是某程APP不愿意,说包太大,要瘦身.所以,只能网上找资料.下面说说我的的做法,亲测试可以的.我一篇博客已详细介绍了开发SDK包的过程
步骤
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%左右的体积.所以这个选项很重要.
二,设置Optimization Level下的Release模式为:Fastest,Smallest[-Os] .这是Xcode上默认的,但我们要知道,意思是开启不增加代码大小的全部优化,并让可执行文件尽可能小.
经过上面的设置,我的.framework有3M减到了1.8M.
三,删除无用代码,设置Dead Code Stripping为YES,去掉冗余代码即代码被定义但未被使用.
四,我原来在Architectures中加入了armv7s. 现在我将armv7s删除,重新编译,可以减少三分之一的体积..framework包由原来的1.8M减到1.2M.
指令集:armv6 : iPhone,iPhone2,iPhone3G,第一代和第二代iPod Touch; armv7:iPhone4,iPhone4S; armv7s:iPhone5,iPhone5C; arm64:iPhone5S
指令集是向下兼容的,所以设置了arnv7是可以在armv7s的设备上运行的.
五,删除framework中无用mach.(注:由于本人很懒,该方法没试过,不过该方法是可信的).
http://www.zhimengzhe.com/IOSkaifa/29958.html
六,ipa缩小文件体积
https://blog.csdn.net/a2657222/article/details/45723161
七,自己封装,尽量不要用第三方的.
个人推荐所有纯代码手写. 我之前用的网络请求是AFN,那么如果自己封装网络请求. 代码量是不是会减小. 最后的sdk包的体积也会变低.
八,使用HTML5来替换原生的页面
我请教过我同行, 他告诉我他们开发的所有sdk全都是使用HTML5开发. 但是并不知道使用HTML5开发后的sdk包和使用原生的sdk包那个大. 这里给出建议:我没有测试过H5开发和原生开发后的sdk包谁大, 但是 如果你公司有条件的话, 建议还是使用H5来开发SDK包.
参考
博客原文 为CSDN:https://blog.csdn.net/luochuanAD/article/details/53582776