熱更新版本檢測與更新機制

## 熱更新版本檢測與更新機制

#### 1 AB簡介

assetsbundle  

#### 2 版本檢測原理

 

第一步  打包準備

 每次打包,要對應生成一個配置文件,assetslist.txt 

記錄打包的時間,

打包實際情況:在公司裏,

專門打包PC。(打包速度很慢,需要高配的機器,cpu和內存。)

SVN,Git,更新到最新版本。然後執行我們框架的打包功能。

assetslist.txt 

###### **第一行 是打包的時間(開發機的本地時間  北京時間)**

這個打包時間,我們用毫秒數,實際就是我們的大版本號。

1  每次打包版本號不能相同

2  版本是遞增的

3  版本號要有一定的隱蔽性。   1001  1002  1003   IP 

1123 .123.1515

**第二行 開始  是我們所有打包資源的描述**

ab包名,md5信息,資源包的size, 其他信息(level)

ab的倚賴問題:

ab包1裏面有一個預製體 。 它上面引用了一張圖片。

這張圖片位於ab包2中。

只加載ab包1, 預製體上丟圖。

先加載ab包1,再加載ab包2,  預製體繼續丟圖

由於ab包1依賴ab包2,所以必須先加載依賴包

先加載ab包2,再加載ab包1,才能夠正常顯示預製體上的圖片。

資源管理器,它在使用一個ab裏面的一個asset的時候,要根據依賴文件(unity引擎會生成),找到它依賴的所有的ab包,並先行加載。然後再加載自己。

按照功能模塊劃分資源,然後公共資源獨立。

模塊運行前,先加載公共資源。然後加載模塊資源。

比如揹包模塊,不管圖片,預製體,還是功能預製體,都在揹包AB包裏。所以不存在依賴問題。

在我們的框架裏,不是一次全部加載讀出。而是按需讀出。

清理資源策略:

功能關閉,清理對應ab包。

功能關閉,延時清理ab包。倒計時N 秒。如果玩家再次時用到這個功能,則繼續重置倒計時爲N。

高級機制:結合業務

比如有個功能,10級之前,使用非常頻繁,10級之後,不太使用,20級之後一天一次。

清理時候,加一個維度判斷,等級。

N可以設置長一點。  N可以設置短一點, 20以後,N可以設置成0. 實時清理。

##### 更新檢測原理:

客戶端啓動,

第一步,檢測服務器上最新的assetslist的大版本號,和本地的assetslist的大版本號,

如果本地小於服務器,則開始第二步。

第二步:逐一的判斷服務器當前版本的AB包的MD5信息與本地的對應AB包的MD5信息做比較。

如果相同,則不需要下載,如果不同,則添加到下載列表。

第三步,根據下載列表,開啓下載。

#### 3 版本檢測與更新重要知識點

1 persistentDataPath 目錄 

​     允許開發者 讀寫這個目錄。byte,形成資源文件。 ab包從資源服務器上下載後,寫入這個目錄

2  StreamingAssets 目錄        apk包打出來。 同時還有ab包。

更新了一年了。  AB已經產生了500M. 

新玩家下載,進遊戲就要下500M更新。

500M的AB包直接放到項目裏(StreamingAssets),隨着包打個新的渠道包。

www 方式讀取出來,放到persistentDataPath,先解壓出來。然後再去判斷熱更新。

​    只能讀,不能寫, 不加密的目錄

3  Resoureces目錄      不用熱更新的資源,放到這裏。

​    只能讀,不能寫, 加密的目錄。 

打包一個APK。  demo.apk  你可以改後綴名爲  demo.zip 解壓開。

你去觀察,如果你的文件放在StreamingAssets目錄,解壓後直接能看到。

AAA.png  

如果你的文件放在Resoureces目錄,解壓後是加密的。

4 資料服務器 。 

IP地址。 定位資源服務器在網絡的位置。生產環境,不能直接使用IP

使用域名。

使用一個IP服務器,從IP服務器上獲取資源服務器地址。

接入全國的CDN節點。

5 檢測和下載AB包的執行流程

 

#### 4 學習建議

lua熱更新

xlua  tolua  slua 搞熟

lua 語言的語法基礎掌握。  元表   ,掌握如何用lua實現面向對象

搭建一個極簡的熱更新框架。

能否打ab包,

能夠檢測熱更新,並下載ab包,(本節課內容)      

加載ab包,在遊戲中使用,實現一個資源管理器,用編輯器開發和打包,是不同的。

接下來,學習如何架構一個熱更新生產環境的開發框架

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章