在WWDC大會上蘋果公司為設備存儲空間不夠用的iPhone和iPad用戶介紹了一個解決方案——App Thinning,它能讓你的設備騰出更多空間。這個功能的作用就在它能夠讓iOS9設備僅下載需要的代碼,這樣應用占用的空間就會比目前的少很多。
不過在這項功能中其實有三個獨立的機制,在給應用瘦身方面,它們發揮著各自的作用。下面讓我們來詳細了解一下了。
首先是App Slicing,它在這其中發揮著最重要的作用。因為應用需要在不同尺寸的設備上運行,從3.5英寸的iPhone4到5.5英寸的iPhone(通用應用還支持10英寸iPad),針對這些不同的設備,它們內含不同的獨立資產,而大部分是你的設備不需要的。
假設你使用的是iPhone5c,它運行的是32位CPU和GPU,不支持Metal API。如果你下載的是一款最新的通用游戲應用,它的二進制中含有64位代碼,iPad和“3x”iPhone6 Plus資產以及Metal API代碼,這些都是你的設備用不上的。它至需要32位代碼,“2x”iPhone尺寸資產以及OpenGL圖形代碼。
有了App Slices,開發者就可以根據設備添加資產標簽,當用戶從iTunes下載應用時,它將僅下載你的設備需要的資產。因為蘋果已經將整個過程設計得非常簡單,所以相信很多應用很快就會開始支持這項特性。
ODR(隨需應變資源)是應用瘦身的另外一種方法。比如多級游戲,用戶需要的通常都是他們當前的級數以及下一級。ODR意味著用戶可以下載他們需要的幾級游戲。隨著你的級數不斷增加,應用再下載其他級數,並將用戶成功過關的級數給刪掉。
最後還有一種就是Bitcode。開發者不再上傳應用的預編譯的二進制文件,而是上傳應用的“中間代表”。在用戶下載之前,App Store在自動編譯應用程序。這樣即使開發者沒有給他們的代碼添加標簽,應用也能夠執行App Slicing部分功能,僅下載設備需要的32或64位代碼。
不過Bitcode也意味著如果蘋果完善編譯器提高代碼效率,用戶下載應用時蘋果進行的完善會自動整合進去。
當然這個新特性有時候也會帶來不方便。比如你坐十幾個小時飛機,期間一直在玩游戲,不小心你就一路過關斬將,但是因為沒有下載所以不能繼續玩下去,這種時候會非常無奈。不過在大多數情況下,對多數用戶來說,App Thinning帶來的好處還是比較多的,對於16GB容量設備用戶來說更是如此。