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