Hi 我的游戲個人項目掃雷Elic 無盡天梯夢見賬本
類型
游戲
財務
Elic
Umemi
前言
應用瘦身是個老生常談的話題。蘋果其實對于應用瘦身也有著自己的財務一些方案。本文就將結合官方文檔進行闡述。無務
一、盡天見賬 什么是梯夢應用瘦身?
在 iOS, tvOS, 上 和操作系統(tǒng)根據(jù)用戶設備和操作系統(tǒng)的性能對App進行裁剪優(yōu)化。這個優(yōu)化的本類過程就是 應用瘦身。
二、型財 剪切 (iOS, tvOS)
是游戲針對不同設備不同系統(tǒng)創(chuàng)建部署變體應用包的過程。每個變體只包含當前設備和操作系統(tǒng)所需要的財務資源和可執(zhí)行文件。你只需要打包上傳完整版本的無務應用到 。 將會根據(jù)不同的盡天見賬設備及操作系統(tǒng)版本創(chuàng)建分發(fā)不同的變體。
用 asset 儲存圖片資源以便 為不同的梯夢變體選擇資源加載。當用戶安裝應用時,本類將會下載安裝一個針對其設備系統(tǒng)版本的型財變體。
Xcode 將會在本地 build 和 run 的游戲時候模擬進行 。當你 的時候 Xcode 將會包含所有構建版本并允許你導出變體包。
下圖很好的演示了這個過程
思考
這里提到 asset 會根據(jù)架構不同進行資源加載,所以我們平時不要把資源直接放到 中,而跳過了這個優(yōu)化的過程。
三、
是編譯器的一層間接。你上傳到 的打開了的 App 將會在 被 編譯 和 鏈接。包含了 將會使Apple 可以在未來再優(yōu)化你的應用包而不用再重新上傳。
對于 iOS 應用 是默認非必須選的。 和 tvOS 是必選的。如果想要支持 那么你所有用到的庫都要支持 。
符號表
Xcode 默認會隱藏你的應用的符號表,所以對于 Apple 它是不可見的。當你上傳你的 App 到 的時候你可以選擇包含符號表``。包含符號表會使Apple 為你提供崩潰日志。
如果你想要自己收集崩潰日志,那么你可以不上傳符號表。你可以在發(fā)布應用后下載 編譯后的符號表。
四、 ODR: On- (iOS, tvOS)
這些資源主要是圖片和聲音。 將其保存管理在蘋果的服務器。 將會按需使用資源優(yōu)化變體包。后面將以 ODR 進行簡稱。
ODR 提供了更好的用戶體驗:
4.1 使用須知
App 負責請求這些資源,操作系統(tǒng)負責 下載 和 存儲。應用使用資源,然后請求。下載后,資源可能會通過多個啟動周期保留在設備上,使訪問速度更快。
資源可以是 支持的任何類型的資源,但 可執(zhí)行程序 除外。Table 1-1 顯示支持按需資源類型,并指示這些類型是否以 文件 或 Asset 包含在項目中。
Table 1-1: On- types
Data file
?
?
Image
?
?
?
?
scene
?
atlas
?
?
Apple TV Image Stack
?
?
數(shù)據(jù)文件可以包含任何類型的數(shù)據(jù),但可執(zhí)行的 Swift、 -C、 C 或 C++ 代碼除外。腳本語言生成的文件 可以是按需加載的。
4.2 ODR 的好處應用資源懶加載。遠程存儲很少使用的資源。應用內購買資源的遠程存儲。五、 ODR 標簽的工作原理
通過分配 一個或多個標簽 來識別開發(fā)過程中的按需加載資源。標簽 是您創(chuàng)建的字符串標識符。您可以使用 標簽的名稱 來識別應用中如何使用包含的資源。例如 在游戲中,使用標記 level-5 來處理與 level-5 相關的每個資源。
當操作系統(tǒng)需要更多存儲時5.1 游戲舉例
繼續(xù)使用游戲示例,在分為多個級別的游戲中,用戶只需要與用戶正在玩的水平和下一個可能級別相關的資源。
下圖顯示一個應用,其中包含所有級別的所有資源。
通過為不同級別以及不需要包含在應用中的其他共享資源創(chuàng)建標簽,可以縮小應用包的大小。
下圖顯示了一個更小的應用,其標記的資源集托管在 App Store 上。
5.2 額外設置
您可以指定
六、 ODR 的生命周期
應用按標簽請求,而不是特定的資源。
6.1 共享 ODR
當您使用 ODR 開發(fā)應用時,您可能會注意到請求一個標簽會同時下載的其他標簽相關的資源。這是因為操作系統(tǒng)與用于下載共享資源的優(yōu)化資產包配合使用。一個標簽可能存在多個 Asset 中。構建應用時,Asset 由 Xcode 生成。
6.2 流程
1.應用程序從操作系統(tǒng)請求標簽。操作系統(tǒng)將所要求的標簽轉換為包含相關資源的一組資產包。
在下圖中應用請求與 和 標簽相關的資源。
2.標簽的 Asset 位于本地存儲中,則生命周期移動到第6步。
3.標簽的一個或多個 Asset 托管在 App Store 上,原因要么是它是應用的第一次發(fā)布,要么是之前加載在設備上的資源被清除(參見下面的 第9步)。
在下圖中,所有 ODR 都在應用商店中。
4.操作系統(tǒng)開始下載與尚未存儲在本地存儲中的相關的資源。
5.與所要求的標簽相關的 Asset 資源完成下載到設備。
在下圖中,與 和 標簽相關的資源將下載到了設備中。
6.如果成功下載了與所要求的標簽相關的資源,或者如果資源已在設備存儲中,則操作會增加 Asset 的引用計數(shù),并通知應用所請求的標簽可用。
在下圖中,應用程序被告知與 和 標簽相關的資源是可用的。
標簽可用后,應用將使用與這些標簽相關的資源。ODR 的訪問方式與與下載的應用捆綁的資源相同。下圖顯示下載的資源作為應用程序的虛擬成員。
7.應用程序通知操作系統(tǒng),它已經完成了對請求標簽的使用。
8.操作系統(tǒng)在本地存儲中釋放標簽。這是通過減少與標簽相關的 Asset 的引用計數(shù)來完成的。
對設備上已使用的標簽進行另一個請求將移動到 第1步。
9.操作系統(tǒng)從本地存儲中清除與 Asset 相關的緩存資源。
七、 總結
本文只是初步的對 ODR 有了一個整體初步的了解。很多細節(jié)還并沒有涉及比如項目怎么配置,代碼怎么寫。我將在后續(xù)文章中繼續(xù)深入探索。