App再瘦身
從09年開始做iPhoneDev到現(xiàn)在剛好3年時(shí)間,那個(gè)時(shí)候還在北京的一家公司實(shí)習(xí),從OC語法開始自學(xué),你可以看到周圍的人在用iPhone3GS,但沒人懂OC、很少人用過Mac系統(tǒng)。一路過來有stackoverflow、iphonedevsdk等出名站點(diǎn)的幫助,收獲不少?,F(xiàn)在,自己正處在角色的轉(zhuǎn)型,對(duì)自己這3年來的iPhone開發(fā)在不停的思考著,整理成文檔,希望自己的經(jīng)驗(yàn)?zāi)軌驅(qū)C朋友有所幫助。有錯(cuò)誤的地方和任何問題,請(qǐng)毫不猶豫的指出。
這個(gè)帖子整理App大小優(yōu)化的經(jīng)驗(yàn)。
之前看過阿里UED的一篇文章“App瘦身記”,是從UED的角度來看待減小App大小,前面3點(diǎn)是建議,后面2點(diǎn)是瘦身辦法。
我來說一下我的經(jīng)驗(yàn)。大致的思路是:分析Xcodebuild目錄下xx.app的資源,按從大到小排序,重點(diǎn)優(yōu)化大文件。這個(gè)方法效果最好,能夠讓app瘦身50%以上,也就是減小用戶一半的下載時(shí)間。
查看生成的app大小
Debug和Release編譯模式產(chǎn)生的文件大小是不一樣的,Debug模式生成的xx.app要大些。建議用Release模式生成的xx.app來分析,這個(gè)是最接近提交審核的IAP。
產(chǎn)品上線后顯示在AppStore上程序的大小是經(jīng)過壓縮的。可以手動(dòng)壓縮xx.app,查看生成的xx.zip的大小,這個(gè)是最接近產(chǎn)品上線后的大小。
產(chǎn)品上線后iTunes顯示的大?。?/p>
開始瘦身
右鍵點(diǎn)擊xx.app查看包的內(nèi)容,按大小排序。
可以看到最占用空間的那些文件,一般是png文件占用的空間比較大,特別是iPad3視網(wǎng)膜的啟動(dòng)畫面,可以大到7MB!如果app支持橫豎屏,那么啟動(dòng)畫面文件的大小又增加1倍。
這里列出常見的大文件:
• 可執(zhí)行文件
• 啟動(dòng)畫面 (比如:iPad 3 Retina)
• 背景圖片
• 阿里UED里提到的Workthrough (這個(gè)在國(guó)內(nèi)app很常見)
• 第三方庫(kù)的bundle包、說明文件
• 音效素材 (比如:wav格式文件)
優(yōu)化方法有:
• 不需要透明的地方,使用jpg而不是png
比如:背景圖片、Workthrough、bundle里面的png文件,jpg壓縮比使用0.6左右,在不影響視覺效果的情況下盡可能的小;
• 不使用Default.png,使用Default.jpg
蘋果限制啟動(dòng)畫面只能是png格式,iPad3 Retina的png文件往往都很大。這種情況下可以在app啟動(dòng)時(shí)顯示Default.jpg,等到載入完畢后再顯示首頁(yè)。該方式的缺點(diǎn)是啟動(dòng)時(shí)會(huì)有黑屏然后才顯示Default.jpg;優(yōu)點(diǎn)是大大減小app大小,以及可自定義啟動(dòng)畫面。比如UC瀏覽器HD在倫敦奧運(yùn)會(huì)期間更換的啟動(dòng)畫面;
• 素材做成可拉伸,類似Android的.9
界面導(dǎo)航條背景、彈框背景、按鈕等都可以考慮用拉伸素材;
• 去除不必要的文件
一般開發(fā)時(shí)都有統(tǒng)一的通用庫(kù),方便其它工程調(diào)用,節(jié)省開發(fā)時(shí)間。把常用的庫(kù)集成到通用庫(kù)里會(huì)造成通用庫(kù)體積變大,應(yīng)該注意不必要的資源不要添加進(jìn)去。比如:在發(fā)布的時(shí)候,TestFlight可以不用編譯;第三方庫(kù)的說明文件不要引入工程,F(xiàn)lurry的txt、pdf文件;如果付費(fèi)版本不需要廣告,那么廣告SDK不要集成到通用庫(kù),只在單獨(dú)的工程里引用;
• 優(yōu)化png, jpg素材
推薦使用ImageOptim,在準(zhǔn)備提交審核前,使用該工具優(yōu)化所有png, jpg素材。可以減小~20%左右的圖片大小。但png素材在Xcode編譯后體積跟優(yōu)化前的差不多,這個(gè)應(yīng)該跟Xcode的優(yōu)化方式有關(guān)。更新:需要關(guān)掉Xcode的png優(yōu)化,ImageOptim優(yōu)化的效果才明顯,參考官方說明:Xcode's built-in (de)optimization;
• 音視頻素材使用經(jīng)過壓縮的格式
wav的音頻格式生成的文件比較大,可以使用蘋果推薦的caf格式代替。關(guān)于如何選擇音頻壓縮格式可以參考這篇文章:Audio101 for iPhone Developers: File and Data Formats。
在第一次產(chǎn)品提交審核前,可以過一下上面提到的方法,減小App大小。我們的一個(gè)產(chǎn)品PhotoCool 1.2版本的大小是22.4MB,在1.3版本使用以上方法進(jìn)行優(yōu)化,優(yōu)化后只有13.1MB,縮小了41.5%!下載速度快了,用戶會(huì)更高興的。