App Thinning
前言:周六放松下咯匙铡,正巧導師叫我看看iOS9的相關(guān)內(nèi)容阀蒂,而今天剛好看了蘋果官方文檔關(guān)于App Thinning 的介紹就順便翻譯翻譯記錄下~
App Thinning可以譯成“應(yīng)用瘦身”何鸡。指的是App store 和操作系統(tǒng)在安裝iOS或者watchOS的 app 的時候通過一些列的優(yōu)化,盡可能減少安裝包的大小,使得 app 以最小的合適的大小被安裝到你的設(shè)備上熏挎。而這個過程包括了三個過程:slicing, bitcode, and on-demand resources蚌成,詳細的內(nèi)容如下
Slicing
App Slicing在節(jié)省應(yīng)用所需資源中發(fā)揮著最重要的作用前痘。很多應(yīng)用需要在不同尺寸的設(shè)備上運行,針對這些不同的設(shè)備担忧,它們內(nèi)含不同的獨立資源芹缔,而大部分是你的設(shè)備不需要的。所以App store會針對不同的設(shè)備制作不同的“變種App”瓶盛,當你下載app時候只需要下載不同的“變種app”就可以了最欠。
??比如用戶使用的是iPhone 5c示罗,它運行的是32位CPU和GPU,并不支持Metal API芝硬。但如果用戶下載的是一款最新的通用游戲應(yīng)用蚜点,它的二進制中含有64位代碼,iPad和“3x”iPhone 6 Plus 資源以及Metal API代碼拌阴,這些都是你的設(shè)備用不上的绍绘。它只需要32位代碼,“2x”iPhone尺寸資源以及OpenGL圖形代碼迟赃。
Slicing 的主要的工作流程如下:
在 Xcode中,選擇好目標設(shè)備并且使用 asset catalog 提供多分辨率的圖片資源
只有使用 asset catalog 才能正確使Slicing作用于資源文件在模擬器或者設(shè)備上編譯并運行app
Xcode 會自動構(gòu)建針對你運行設(shè)備的“變種app”陪拘,同時也是為了減少編譯時間和進行本地的測試
打包app(為了及時發(fā)現(xiàn)不同目標設(shè)備的配置錯誤,可以在本地為目標設(shè)備導出“變種app“纤壁,測試無誤后再打包)
上傳打包好的app到 iTunes connect
App store 將會為上傳的app歸檔創(chuàng)建不同的“變種app”左刽,具體的“變種app”的數(shù)量在Xcode 的project 頁面中設(shè)置在 iTunes Connect 中, 發(fā)布一個預(yù)覽版給合格的測試者進行測試
測試者通過 TestFlight 下載預(yù)覽版
TestFlight 會自動根據(jù)測試者的設(shè)備下載合適的“變種app”
Bitcode (iOS, watchOS)
字節(jié)碼是一個編譯好的程序的中間表示形式。上傳到 iTunes Connect 中的包含字節(jié)碼的app 將會在 App store 中進行鏈接和編譯酌媒。蘋果會對包含字節(jié)碼的二進制app進行二次優(yōu)化欠痴,而不需要提交一個新的app版本到app store中。
On-Demand Resources (iOS)
ODR(on-demand resources 隨需應(yīng)變資源)是iOS減少應(yīng)用資源消耗的另外一種方法秒咨。比如多級游戲喇辽,用戶需要的通常都是他們當前的級數(shù)以及下一級。ODR意味著用戶可以下載他們需要的幾級游戲拭荤。隨著你的級數(shù)不斷增加茵臭,應(yīng)用再下載其他級數(shù),并將用戶成功過關(guān)的級數(shù)刪掉舅世。
當用戶點擊應(yīng)用內(nèi)容的時候旦委,就會動態(tài)從App Store上進行下載,也就是說用戶只會在需要的時候占用存儲空間雏亚。這項功能有趣之處還在于當將這些內(nèi)容在后臺進行下載之后缨硝,當存儲空間緊張的時候會自動進行刪除。