1. 程式人生 > >iOS之開發的SDK(.framework)瘦身

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包.  

二,結束語:

由於是領導要求,所以在網上查了一下資料,寫了這篇部落格.   但是我認識到了一點:並不是所有的程式設計師都樂意分享經驗,一些大公司有一些更好的優化方案,要麼是不願意分享,要麼是我們找不到.  儘管寫部落格抱著的目的不同,但是我們應該對這些作者有著起碼的尊重. (注:作者本人的目的也不是純的,我也是想在以後的工作,有著一點晉身之本.抱歉啊.但是我一點會將我的經驗有效的表達出來,雖然我的語言表達不是很好). 參考:http://blog.csdn.net/fishmai/article/details/49278299