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%左右的體積.所以這個選項很重要.
(2),設定Optimization Level下的Release模式為:Fastest,Smallest[-Os] .這是Xcode上預設的,但我們要知道,意思是開啟不增加程式碼大小的全部優化,並讓可執行檔案儘可能小.
經過上面的設定,我的.framework有3M減到了1.8M.
2,刪除無用程式碼,設定Dead Code Stripping為YES,去掉冗餘程式碼即程式碼被定義但未被使用.
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的裝置上執行的.
4,刪除framework中無用mach.(注:由於本人很懶,該方法沒試過,不過該方法是可信的).
5,ipa縮小檔案體積
6,自己封裝,儘量不要用第三方的.
個人推薦所有純程式碼手寫. 我之前用的網路請求是AFN,那麼如果自己封裝網路請求. 程式碼量是不是會減小. 最後的sdk包的體積也會變低.
7,使用HTML5來替換原生的頁面
我請教過我同行, 他告訴我他們開發的所有sdk全都是使用HTML5開發. 但是並不知道使用HTML5開發後的sdk包和使用原生的sdk包那個大. 這裡給出建議:我沒有測試過H5開發和原生開發後的sdk包誰大, 但是 如果你公司有條件的話, 建議還是使用H5來開發SDK包.