項目需求:最近開發的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%左右的體積,所以這個選項很重要。
(2)、設置Optimization Level下的Release模式為:Fastest,Smallest[-Os] 。這是Xcode上默認的,但我們要知道,意思是開啟不增加代碼大小的全部優化,并讓可執行文件盡可能小。
經過上面的設置,我的.framework有12M減到了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
指令集是向下兼容的,所以設置了armv7是可以在armv7s的設備上運行的。
四、刪除framework中無用mach
(注:該方法沒試過,不過該方法是可信的)
五、ipa縮小文件體積
補充:
1、LinkMap分析類模塊大小
2、LinkMap下載
3、iOS APP安裝包瘦身實踐(無用資源檢測工具、圖片壓縮工具)
4、組件化-動態庫實戰(動態庫共享ipa瘦身)