1. 程式人生 > >App Thinning(應用瘦身)功能介紹

App Thinning(應用瘦身)功能介紹

App Thinning (iOS9)會自動檢測使用者的裝置型別(即型號名稱)並且只下載當前裝置所適用的內容。換句話說,如果你使用的是 iPad Mini 1(1x解析度且非 retina 顯示屏)那麼只會下載 1x解析度(下文會有更多介紹)所使用的檔案。更強大和更高解析度的 ipad(如iPad Mini 3或 4)所使用的資源將不會被下載。因為使用者僅需下載他/她自己當前使用的特定裝置所需的內容,這不僅加快了下載速度,還節約了裝置的儲存空間。

App Thinning 主要有以下三個方面**:App Slicing(應用程式的劃分),Bitcode以及按需載入資源。**
在這裡插入圖片描述

App Slicing


App Slicing在節省應用所需資源中發揮著最重要的作用。
很多應用需要在不同尺寸的裝置上執行,針對這些不同的裝置,它們內含不同的獨立資源,而大部分是你的裝置不需要的。所以App store會針對不同的裝置製作不同的“簡化版App”,當你下載app時候只需要下載不同的“簡化版app”就可以了
比如使用者使用的是iPhone 5c,它執行的是32位CPU和GPU,並不支援Metal API。但如果使用者下載的是一款最新的通用遊戲應用,它的二進位制中含有64位程式碼,iPad和“3x”iPhone 6 Plus 資源以及Metal API程式碼,這些都是你的裝置用不上的。它只需要32位程式碼,“2x”iPhone尺寸資源以及OpenGL圖形程式碼。
在這裡插入圖片描述

Slicing 的主要的工作流程如下:
1、在 Xcode中,選擇好目標裝置並且使用 asset catalog 提供多解析度的圖片資源
只有使用 asset catalog 才能正確使Slicing作用於資原始檔
2、在模擬器或者裝置上編譯並執行app
3、Xcode 會自動構建針對你執行裝置的“簡化版app”,同時也是為了減少編譯時間和進行本地的測試
4、打包app(為了及時發現不同目標裝置的配置錯誤,可以在本地為目標裝置匯出“簡化版app“,測試無誤後再打包)
5、上傳打包好的app到 iTunes connect。App store 將會為上傳的app歸檔建立不同的“簡化版app”。
6、在 iTunes Connect 中, 釋出一個預覽版給合格的測試者進行測試
7、測試者通過 TestFlight 下載預覽版。TestFlight 會自動根據測試者的裝置下載合適的“簡化版app”。

Bitcode (iOS, watchOS)
Bitcode是一個編譯好的程式的中間表示形式。上傳到 iTunes Connect 中的包含Bitcode的app 將會在 App store 中進行連結和編譯。蘋果會對包含Bitcode的二進位制app進行二次優化,而不需要提交一個新的app版本到app store中
在這裡插入圖片描述

按需載入資源
想要充分理解 App Thinning,你必須理解按需載入資源(On Demand Resources , ODR)。按需載入資源是在 app 第一次安裝後可下載的檔案。這個機能簡單的說,就是在下載app的時候,app中包含的不重要資源不下載,等到需要時,在由系統向蘋果的server傳送請求,下載這些資源包。舉例說明,當玩家解鎖遊戲的特定關卡後可以下載新關卡(和這個關卡相關的特定內容)。此外,玩家已經通過的關卡可以被移除以便節約裝置上的儲存空間,。。
開啟按需載入資源功能涉及改變 Xcode 中的設定(在編譯設定(Build Settings)下),將「啟用按需載入資源”選中為 是」 。
在這裡插入圖片描述

蘋果原文連結
https://help.apple.com/xcode/mac/current/#/devbbdc5ce4f