最近公司給我安排了一個(gè)任務(wù)率挣,想要給公司的iOS app瘦身琳拭,上傳前的包是24.3M训堆,上傳后在app store上顯示的是28.8M,在iOS平臺(tái)中臀栈,這個(gè)大小不算大,可是公司希望這個(gè)app的大小能夠在15M以內(nèi)挠乳,這個(gè)感覺難度有點(diǎn)大
直接說我用到的幾個(gè)方案吧
1.刪除不用的代碼权薯、第三方庫(kù)、圖片等資源 這一步負(fù)責(zé)這個(gè)項(xiàng)目的同事已經(jīng)做過一次了睡扬,app包之前是32M盟蚣,他刪除之后變成了28.8M,所以我就沒有再去搞這一步
2.我發(fā)現(xiàn)里面有一個(gè)第三方的sdk非常大,在國(guó)外支付paypal比較方便卖怜,它是通過cocoapods管理的第三方庫(kù)屎开,集成paypal的sdk之后,會(huì)發(fā)現(xiàn)多了一個(gè)CardIO的庫(kù)(280M)和paypal-iOS-SDK(53M)马靠,因?yàn)槲抑白龅捻?xiàng)目中有做過支付寶支付使用h5調(diào)用原生支付寶app奄抽,不用集成支付寶的sdk,所以我就去查了paypal的文檔甩鳄,發(fā)現(xiàn)它也是支持的逞度,后來(lái)我就建議這個(gè)paypal支付直接用h5實(shí)現(xiàn),刪除之后妙啃,打的包變成了18.9M档泽,已經(jīng)小了不少了 。 ps微信支付揖赴、支付寶支付都是支持h5調(diào)用原生微信馆匿、支付寶的,只是微信的h5支付申請(qǐng)起來(lái)可能比較困難燥滑,這個(gè)項(xiàng)目恰好也用了微信分享的功能渐北,它們的支付和分享是一個(gè)sdk,支付寶的sdk大小也就9M铭拧,所以就沒有刪微信和支付寶的sdk
3.bitcode腔稀,這個(gè)是官方提倡的瘦身方案盆昙,結(jié)果我設(shè)置bitcode = YES之后項(xiàng)目編譯就報(bào)錯(cuò),后來(lái)查了一下焊虏,原來(lái)是用了聲網(wǎng)的sdk淡喜,它支持的是armv7 和 arm64,沒有armv7s诵闭。因?yàn)檫@個(gè)就不支持bitcode炼团,這條路走不通了
4.刪除對(duì)iPhone 4s的支持。這個(gè)項(xiàng)目支持的最低版本是iOS8. armv7疏尿、armv7s瘟芝、arm64系列的機(jī)型,armv7主要有iPhone3GS iPhone4 iPhone4s褥琐。 但是能夠升級(jí)到iOS 8 的只有iPhone 4s锌俱。
所以我就把a(bǔ)rmv7刪除了,這樣子打包的結(jié)果是14.6M
后來(lái)把a(bǔ)rmv7和paypal敌呈、支付寶的sdk刪除之后的打包的大小是10.5M
5.現(xiàn)在這個(gè)Xcode 8把包上傳到app store會(huì)變大贸宏,有些app還是變小,具體是怎么樣的我還不知道磕洪,但是上傳之前有一個(gè)選項(xiàng) include app symbols for your application to receive symbolicated reports from Apple吭练,把這個(gè)去掉,包也會(huì)小1析显、2M鲫咽,現(xiàn)在很多app都集成了各種統(tǒng)計(jì)的SDK,這個(gè)用的也不多
6.在build setting中把Generate Debug Symbols在release模式下關(guān)閉
這樣子編譯出來(lái)的.o文件會(huì)小一些谷异,但是目前發(fā)現(xiàn)效果不明顯分尸,不知道是不是其它原因影響的
7.Build Settings->Optimization Level有幾個(gè)編譯優(yōu)化選項(xiàng),release版應(yīng)該選擇Fastest, Smalllest歹嘹,這個(gè)選項(xiàng)會(huì)開啟那些不增加代碼大小的全部?jī)?yōu)化寓落,并讓可執(zhí)行文件盡可能小。這個(gè)好像release模式下默認(rèn)就是這樣子的