iOS9 推出之后,大受歡迎窑眯。僅僅數(shù)周屏积,已經(jīng)有超過半數(shù)的 iOS 設(shè)備安裝了這一新系統(tǒng)。這是 iOS 歷代版本中采納速度最快的—甚至打破了 2013 年 iOS7 創(chuàng)下的記錄磅甩。
什么是應(yīng)用瘦身炊林?
“應(yīng)用瘦身”(App thinning) 是美國蘋果公司自iOS 9發(fā)布的新特性,它能對Apple Store和操作系統(tǒng)進(jìn)行優(yōu)化卷要,它根據(jù)用戶的具體設(shè)備型號渣聚,在保證應(yīng)用特性完整的前提下,盡可能地壓縮和減少應(yīng)用程序安裝包的體積却妨,也就是盡可能減少應(yīng)用程序?qū)τ脩粼O(shè)備內(nèi)存的占用饵逐,從而減小用戶下載應(yīng)用程序的負(fù)擔(dān)。App thinning的實現(xiàn)主要有以下3種方法: Slicing彪标、Bitcode和On-Demand Resources倍权。以下將對這3種方法進(jìn)行介紹。
《App Thinning》2015年9月24日默辨,蘋果在其開發(fā)者門戶網(wǎng)站宣布德频,App Thinning 已被推遲,并沒有包含在 iOS9(或9.0.1)的公開發(fā)布中:
然而缩幸,正如筆者在本文一開始提到過的壹置,App Thinning 已經(jīng)得到修復(fù),所有運(yùn)行 iOS 9.0.2 的設(shè)備都可以使用該功能表谊。App thinning 是一種絕佳的工具钞护,它將大大加快應(yīng)用程序的下載速度!是一項可以改變整個下載進(jìn)程的新技術(shù)爆办。許多用戶反應(yīng)难咕,流量費(fèi)用過高、iOS 設(shè)備的存儲空間有限距辆,而下載速度卻不斷提升余佃,為了適應(yīng)這些問題,App Thinning 變得十分值得學(xué)習(xí)跨算。此外爆土,App Thinning 的發(fā)布已經(jīng)推遲了,現(xiàn)在正是學(xué)習(xí)關(guān)于這一新技術(shù)的最好時機(jī)诸蚕。
1. Slicing
在開發(fā)者將完整的應(yīng)用安裝包發(fā)布到Apple Store之后雾消,Apple Store會根據(jù)下載用戶的目標(biāo)設(shè)備型號創(chuàng)建相應(yīng)的應(yīng)用變體(variants of the app bundle)。 這些變體只包含可執(zhí)行的結(jié)構(gòu)和資源等必要部分挫望,而不需要讓用戶下載開發(fā)者提供的完整安裝包立润。
下圖展示了從開發(fā)者使用Xcode開發(fā)完整應(yīng)用并發(fā)布到Apple Store后被用戶下載到不同設(shè)備上的流程。
2.Bitcode
Bitcode使得開發(fā)者上傳應(yīng)用程序時不必非提交預(yù)編譯的二進(jìn)制文件媳板,只需要上傳“intermediate representation(直譯為中間代表)”即可桑腮。而用戶下載時,App Slicing可以根據(jù)用戶需求蛉幸,來判斷你是需要32位還是64位破讨。
也就是說,在用戶下載應(yīng)用之前奕纫,App Store在自動編譯應(yīng)用程序提陶。這樣,即使開發(fā)者沒有給他們的代碼添加標(biāo)簽匹层,應(yīng)用也能夠執(zhí)行App Slicing的部分功能隙笆,僅下載設(shè)備需要的32或64位代碼。不過Bitcode也意味著如果蘋果完善編譯器提高代碼效率,用戶下載應(yīng)用時蘋果進(jìn)行的完善會自動整合進(jìn)去撑柔。
Bitcode 是 iOS 上較新的功能瘸爽,對于新的項目需要手動開啟。這可以通過選擇Build Settings(編譯設(shè)置)下的項目設(shè)置铅忿,將 bitcode 設(shè)為 YES 來完成剪决。
雖然有評論表示,App Thinning這個新特性有時候也會帶來不方便檀训。比如用戶坐十幾個小時飛機(jī)柑潦,期間一直在玩游戲,持續(xù)過關(guān)斬將峻凫,但是因為沒有下載所以不能繼續(xù)玩下去妒茬,會感覺比較無奈。不過蔚晨,對于大多數(shù)用戶的應(yīng)用場景來說,App Thinning將為iOS設(shè)備用戶節(jié)省很多應(yīng)用所需要的存儲空間肛循,對于16GB容量的iOS設(shè)備用戶來說效果則更加明顯铭腕。
iOS 9的更新包體積從原來的4.6GB降至現(xiàn)在的1.3GB,讓不少8GB多糠、16GB的iPhone和iPad老用戶非常開心累舷。而App Thinning方案進(jìn)一步減小了系統(tǒng)在運(yùn)行應(yīng)用等多種實用情景時的存儲資源占用,令人期待夹孔。
3.On-Demand Resources
ODR(on-demand resources 隨需應(yīng)變資源)是iOS減少應(yīng)用資源消耗的另外一種方法被盈。比如多級游戲,用戶需要的通常都是他們當(dāng)前的級數(shù)以及下一級搭伤。ODR意味著用戶可以下載他們需要的幾級游戲只怎。隨著你的級數(shù)不斷增加,應(yīng)用再下載其他級數(shù)怜俐,并將用戶成功過關(guān)的級數(shù)刪掉身堡。
開啟按需加載資源功能涉及改變 Xcode 中的設(shè)置(在編譯設(shè)置(Build Settings)下),將「啟用按需加載資源”選中為 是」
當(dāng)用戶點擊應(yīng)用內(nèi)容的時候拍鲤,就會動態(tài)從App Store上進(jìn)行下載贴谎,也就是說用戶只會在需要的時候占用存儲空間。這項功能有趣之處還在于當(dāng)將這些內(nèi)容在后臺進(jìn)行下載之后季稳,當(dāng)存儲空間緊張的時候會自動進(jìn)行刪除擅这。
參考資料:
iOS APP安裝包瘦身實踐
漫談iOS的應(yīng)用瘦身
Working with App Thinning in iOS 9