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