iOS App 安裝包瘦身指南

安裝包主要由兩部分組成善已,資源文件以及可執(zhí)行文件瓢娜,瘦身主要從這兩部分入手:

一炒瘟、資源文件瘦身

1识窿、刪除無(wú)用資源

現(xiàn)在應(yīng)該沒(méi)有APP需要支持iPhone4以下的機(jī)型了斩郎,所以1X的圖片可以全部刪掉。3X的圖片是保留還是刪掉看具體情況喻频。

2缩宜、未使用的圖片通過(guò)LSUnusedResources掃描刪除

要注意的是可能會(huì)有誤傷,該工具是全匹配甥温,一些拼接名字來(lái)使用的圖片要注意手動(dòng)剔除锻煌。

3、其他資源手動(dòng)刪除

一些音頻姻蚓、視頻和多余的plist文件以及readme文件什么的目測(cè)只能肉眼掃描了宋梧。

4、刪除功能重復(fù)的三方庫(kù)

5狰挡、資源壓縮

1>>圖片壓縮,使用ImageOptim實(shí)現(xiàn)無(wú)損壓縮捂龄,COMPRESS_PNG_FILES和STRIP_PNG_TEXT設(shè)置為NO;

ImageOptim這是一款非常好的圖片壓縮工具加叁,可以進(jìn)行無(wú)損壓縮倦沧,能夠?qū)?png 和 jpeg 圖片文件進(jìn)行優(yōu)化,它能找到最佳的壓縮參數(shù)(在設(shè)置中可以設(shè)置壓縮比例它匕,80% 及以上是無(wú)損壓縮展融,推薦使用),并通過(guò)消除不必要的信息(如文件的 EXIF 標(biāo)簽和顏色配置文件等)豫柬,優(yōu)化后達(dá)到減小文件大小的效果

2>>使用TinyPNG有損壓縮圖片,TinyPNG非常好用強(qiáng)烈推薦.

使用的時(shí)候直接執(zhí)行tinypng *.png -k token腳本即可

[注意]對(duì)于較大尺寸的圖片愈污,可以和設(shè)計(jì)溝通,在不失真和影響效果的前提下轮傍,使用TinyPNG進(jìn)行壓縮暂雹;較小尺寸的圖片,建議使用ImageOptiom创夜。

6杭跪、用LaunchScreen.storyboard替換啟動(dòng)圖片

7、資源按需加載驰吓,非必要資源都等到使用時(shí)再?gòu)姆?wù)端拉取

8涧尿、變更圖片文件的導(dǎo)入方式

圖片資源的導(dǎo)入方式有如下幾種:

1. Assets.xcassets。

只支持png格式的圖片檬贰;

圖片只支持[UIImage imageNamed]的方式實(shí)例化姑廉,但是不能從Bundle中加載;

在編譯時(shí)翁涤,Images.xcassets中的所有文件會(huì)被打包為Assets.car的文件桥言。

2. CreateGroup

黃色文件夾圖標(biāo)萌踱;Xcode中分文件夾,Bundle中都在同一個(gè)文件夾下号阿,因此并鸵,不能出現(xiàn)文件重名的情況;

可以直接使用[NSBundle mainBundle]作為資源路徑扔涧,效率高园担;

可以使用[UIImage imageNamed:]加載圖像。

3. CreateFolderRefences

藍(lán)色文件夾枯夜;Xcode中分文件夾弯汰,Bundle中同樣分文件夾,因此湖雹,可以出現(xiàn)文件重名的情況咏闪;

需要在[NSBundle mainBundle]的基礎(chǔ)上拼接實(shí)際的路徑,效率較差劝枣;

不能使用[UIImage imageNamed:]加載圖像汤踏。

【說(shuō)明】:藍(lán)色文件夾只是將文件單純的創(chuàng)建了引用,這些文件不會(huì)被編譯舔腾,所以在使用的時(shí)候需要加入其路徑溪胶。

[建議]使用Assets.xcassets來(lái)管理圖片

二、可執(zhí)行文件瘦身

1稳诚、打開bitcode設(shè)置

在”Build Settings”->”Enable Bitcode”選項(xiàng)中看到這個(gè)設(shè)置

bitcode是被編譯程序的一種中間形式的代碼哗脖,上傳到apple store后,apple可以為目標(biāo)安裝APP的設(shè)備進(jìn)行優(yōu)化二進(jìn)制扳还,減小安裝包的大小才避。

缺點(diǎn):1.用戶安裝的二進(jìn)制文件不再是開發(fā)這邊生成的,是蘋果通過(guò)bitcode編譯優(yōu)化出來(lái)的氨距,其對(duì)應(yīng)的調(diào)試符號(hào)信息丟失了桑逝,無(wú)法再根據(jù)崩潰日志定位崩潰現(xiàn)場(chǎng); 2.有些三方庫(kù)不支持bitcode俏让,需要打開bitcode重新編譯楞遏。

2、編譯器優(yōu)化級(jí)別

1>>BuildSettings->Optimization Level首昔,Xcode默認(rèn)設(shè)置為“Fastest ,Smallest”寡喝,保持默認(rèn)即可。

2>>Build Settings-> Linking->Dead Code Stripping 設(shè)置成 YES

3>>Deployment Postprocessing 設(shè)置成YES

4>>Strip Linked Product 設(shè)置成YES

5>>工程的Enable C++ Exceptions和Enable Objective-C Exceptions選項(xiàng)都設(shè)置為NO勒奇。手動(dòng)管理異常预鬓。

6>>symbols hidden by default選項(xiàng)設(shè)置為YES。

7>>所有沒(méi)有使用C++動(dòng)態(tài)特性的lib庫(kù)(搜索工程沒(méi)有使用dynamic_cast關(guān)鍵字) Enable C++ Runtime Types 選項(xiàng)設(shè)置為NO赊颠。

3格二、去除符號(hào)信息

Strip Debug Symbols During Copy 和 Symbols Hidden by Default 在release版本應(yīng)該設(shè)為yes劈彪,可以去除不必要的調(diào)試符號(hào)。Symbols Hidden by Default會(huì)把所有符號(hào)都定義成”private extern”蟋定。

4粉臊、第三方庫(kù)

項(xiàng)目里會(huì)引入很多第三方靜態(tài)庫(kù)草添,如果能知道這些第三方庫(kù)在可執(zhí)行文件里占用的大小驶兜,就可以評(píng)估是否值得去找替代方案去掉這個(gè)第三方庫(kù)。通常使用linkmap來(lái)進(jìn)行統(tǒng)計(jì)远寸,然后對(duì)引用的庫(kù)大小進(jìn)行評(píng)估抄淑,對(duì)于過(guò)大的庫(kù)是否有相對(duì)輕量的庫(kù)的替代方案;例如只使用到百度地圖的基本功能驰后,這時(shí)就可以用百度地圖輕量包代替全量包肆资,安裝包可減少5M左右

[建議]第三方庫(kù)最好用cocopods管理

5、APPcode

參看

使用AppCode的9條理由

參考鏈接和拓展閱讀

1灶芝、《iOS安裝包瘦身指南》

2郑原、iOS安裝包瘦身的那些事兒

3、iOS安裝包瘦身方法

4夜涕、iOS APP安裝包瘦身實(shí)踐

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末犯犁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子女器,更是在濱河造成了極大的恐慌酸役,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驾胆,死亡現(xiàn)場(chǎng)離奇詭異涣澡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)丧诺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門入桂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人驳阎,你說(shuō)我怎么就攤上這事抗愁。” “怎么了搞隐?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵驹愚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我劣纲,道長(zhǎng)逢捺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任癞季,我火速辦了婚禮劫瞳,結(jié)果婚禮上倘潜,老公的妹妹穿的比我還像新娘。我一直安慰自己志于,他們只是感情好涮因,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伺绽,像睡著了一般养泡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奈应,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天澜掩,我揣著相機(jī)與錄音,去河邊找鬼杖挣。 笑死肩榕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惩妇。 我是一名探鬼主播株汉,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼歌殃!你這毒婦竟也來(lái)了乔妈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤挺份,失蹤者是張志新(化名)和其女友劉穎褒翰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匀泊,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡优训,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了各聘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揣非。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖躲因,靈堂內(nèi)的尸體忽然破棺而出早敬,到底是詐尸還是另有隱情,我是刑警寧澤大脉,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布搞监,位于F島的核電站,受9級(jí)特大地震影響镰矿,放射性物質(zhì)發(fā)生泄漏琐驴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绝淡。 院中可真熱鬧宙刘,春花似錦、人聲如沸牢酵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)馍乙。三九已至布近,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間潘拨,已是汗流浹背吊输。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工饶号, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留铁追,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓茫船,卻偏偏與公主長(zhǎng)得像琅束,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子算谈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 摘要:以下列出了安裝包瘦身的無(wú)腦執(zhí)行流程涩禀,其中“奇技淫巧”部分為選做題 資源優(yōu)化 刪除無(wú)用圖片 使用LSUnuse...
    暖夏未眠丶閱讀 801評(píng)論 0 1
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,516評(píng)論 25 707
  • 本文會(huì)不定期更新,推薦watch下項(xiàng)目然眼。如果喜歡請(qǐng)star艾船,如果覺(jué)得有紕漏請(qǐng)?zhí)峤籭ssue,如果你有更好的點(diǎn)子可以...
    天之界線2010閱讀 18,183評(píng)論 19 153
  • 文章最后有我的 12 條小總結(jié)高每。 寫在前面 最近公司需求不多屿岂,正好研究一下 App 瘦身的辦法,寫了點(diǎn)小總結(jié)鲸匿。 如...
    Damonwong閱讀 7,683評(píng)論 14 76
  • 1爷怀、非常感恩手機(jī)鬧鈴,每天按時(shí)叫我起床带欢。謝謝运授!謝謝!謝謝乔煞! 2吁朦、非常感恩早上起床后我記得把五豆粥再煮一遍。謝謝渡贾!謝...
    劉映明閱讀 509評(píng)論 0 1