Cocos Creator 教程:熱更新

好久沒寫簡書了,這幾天終於有時間把之前項目用到了熱更新整理下。由於剛入手不久,根據官方文檔把熱更新走了一遍後,發現官方文檔對於像我這樣的新手來說不是很詳細,就有了本文章的出現了。

原理

熱更新原理主要是服務端和本地均保存完整版本的遊戲資源,每次啓動遊戲檢查更新都是通過服務端與本地生成的manifest 先進行初步的版本比對。本地端將服務端的Manifest下載到本地後,當服務端的版本號高於本地端時,通過md5比對有差異的文件並下載,最後把更新的文件下載完成後放在某個文件夾,在入口文件main.js 設置搜索路徑把更新的文件夾放置首位。當程序加載文件or腳本時,熱更文件會優先於本地文件加載,從而達到更新效果。想深入瞭解原理,請到官方文檔or Cocos的熱更新機制

準備

進入官方文檔,需要我們:
1.下載範例工程
2.安裝node.js 來運行生成Manifest 文件
3.一臺遠程服務器(我是在本地安裝web開發的集成環境wamp);

快捷生成Manifest文件

提醒下,如果還沒有安裝node.js是無法生成Manifest文件的。安裝node.js後,打開到範例的目錄新建文件,輸入如下代碼並保存爲version_generator.bat

node version_generator.js -v 1.0.1 -u http://192.168.2.215/remote-assets/ -s build/jsb-binary/ -d assets/

例圖.png

打開bat文件,修改你的遠程地址跟你的遠程熱更新目錄,如圖所示:

遠程地址目錄.png

步驟

  • ###生成Manifest 比對文件
    首先要明白Manifest文件是由version_generator.js腳本生成的。當雙擊version_generator.bat批處理文件時,會在assets目錄生成project.manifest與version.manifest:

由version_generator.js生成的文件
其中project.manifest由以下內容構成:
1.遠程資源包的根路徑
2.遠程 Manifest 文件地址
3.遠程 Version 文件地址(非必需)
4.主版本號
5.文件列表:以文件路徑來索引,包含文件版本信息,使用文件的 md5 校驗碼來作爲版本號
6.搜索路徑列表
其中,1、2、5是最爲重要的。其作用是生成比對文件信息,也就是說,當你生成熱更文件與打原生包時,必須先執行version_generator.bat批處理文件生成Manifest文件信息,確保與打包後的src跟res裏面的文件一一對應。

  • ###構建工程並設置搜索路徑
    構建工程是根據asset目錄下的資源,把所有 JS 腳本打包到 src 目錄中,其他 Assets 資源將會被導出到 res 目錄。當構建項目後,需要進入你的工程目錄下\build\jsb-binary\目錄下有一個main.js。打開輸入如下代碼:
// 在 main.js 的開頭添加如下代碼
    if (cc.sys.isNative) {
        var hotUpdateSearchPaths = cc.sys.localStorage.getItem('HotUpdateSearchPaths');
        if (hotUpdateSearchPaths) {
            jsb.fileUtils.setSearchPaths(JSON.parse(hotUpdateSearchPaths));
        }
    }

添加代碼
這幾行代碼的作用是當下載完成要更新文件後,重啓遊戲將緩存文件夾的搜索路徑前置在搜索路徑中(優先級最高)。只有**添加那幾行代碼,才能優先執行更新的文件,**否則熱更失敗。

  • 生成熱更包

先執行完生成Manifest 比對文件後,接着選擇構建工程。構建完成後,把項目目錄assets文件夾下的project.manifestversion.manifest取出,再把項目目錄build\jsb-binary文件夾下把ressrc文件夾取出。把以上四個文件放到遠程熱更新目錄下。當原生包每次打開應用時,就會檢查更新。有高版本時,就會下載project.manifest進行文件比對並下載。然後遊戲重啓後,就會優先執行熱更資源。

操作步驟

  • 生成原生包

構建項目設置好搜索路徑後,就可以點擊編譯生成原生包。

cocos2dx 源碼實現

  • window環境是在在creator 安裝目錄下的resources\cocos2d-x\extensions\assets-manager

關於搜索路徑的問題

最後

希望經過本文的講解,希望對不懂如何操作熱更新的人有所幫助。喜歡就動動手指點喜歡,關注我吧。我會不定時更新Cocos Creator教程哦~

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