Cocos Creator 熱更新 從0開始集成步驟

一 原理:

建議先瀏覽官方文檔,熟悉了解熱更原理和大體流程
原理
范例

二 環(huán)境:

1.cocos creator

2.python:用于本地模擬遠程服務器

  • pyhton環(huán)境搭建不再贅述(推薦使用homebrew)
  • 啟用本地服務:本地新建一個文件夾,cd到目錄 ,
python -m SimpleHTTPServer 

則開啟了Http服務,

  • 打開網(wǎng)頁 輸入自己的ip地址和文件目錄 能訪問則搭建成功

三 具體步驟(從0開始):

1.原始工程配置:

  • 下載官方范例,找到以下兩個文件
    version_generator.js

    HotUpdate.js

取出待用,然后可以刪除官方范例

  • 新建工程 ,創(chuàng)建一個簡單的界面,兩個按鈕,檢查更新 和 開始更新。


    31566895998_.pic.jpg
  • 把HotUpdate文件引入新建工程中,并做刪減,刪掉官方demo中的UI相關(guān)的代碼,具體見demo里面的HotUpdate文件
  • HotUpdate方法解析
checkCb,為檢查更新方法的回調(diào)
updateCb 為更新進度回調(diào)
checkUpdate 為檢查更新事件
hotUpdate為 開始更新事件
  • 將兩個按鈕事件分別綁定checkUpdate和hotUpdate
  • 構(gòu)建發(fā)布 - 選擇原生平臺 - 構(gòu)建
  • 把version_generator.js 放到工程根目錄,打開終端,cd 工程根目錄 執(zhí)行nodejs 代碼
node version_generator.js -v 0.0.0 -u http://192.168.2.1:8000/remote-assets/HotUpdateDemo/ -s build/jsb-link/ -d assets/

-v: 當前版本號
-u:遠程資源文件目錄路徑 輸入之前模擬的服務器地址+文件目錄 具體路徑對應文件目錄如下:


WechatIMG7.jpeg

-s:本地打包資源相對路徑


WeChat5c57b8a8fa306145478b3f44d481f8f8.png

-d:本地資源文件相對地址

  • 資源管理器會多出兩個文件
    WechatIMG3.jpeg
  • 將project 引入 HotUpdate.js的屬性中
    WechatIMG4.jpeg
  • 再次構(gòu)建 - 發(fā)布
  • 在main.js的 頂部加入以下代碼


    WeChat8cd4b31dfaab07dae4249059c7d1e838.png
if (jsb) {
        var hotUpdateSearchPaths = localStorage.getItem('HotUpdateSearchPaths');
        if (hotUpdateSearchPaths) {
            jsb.fileUtils.setSearchPaths(JSON.parse(hotUpdateSearchPaths));
        }
}

該代碼作用是:如果有熱更新,則使用熱更下來資源的索引地址,若不加,則找不到熱更新內(nèi)容,還是原來的內(nèi)容,(記住:每次構(gòu)建后都必需手動添加代碼)

大版本更新需清楚本地熱更緩存,否則包體更新后可能運行之前熱更代碼:

    //大版本更新 刪除本地熱更緩存 (需更新版本號)
    var gameVersion = "HotUpdateVersion" + "1.0.0"
    var previousVersion = localStorage.getItem(gameVersion);
    console.log(previousVersion)
    // 之前保存在 local Storage 中的版本號,如果沒有,則認為是新版本
    if (previousVersion == null || previousVersion == "") {
        // 熱更新的儲存路徑,如果舊版本中有多個,可能需要記錄在列表中,全部清理
        var storagePath = ((jsb.fileUtils ? jsb.fileUtils.getWritablePath() : '/') + 'blackjack-remote-asset');
        if (jsb.fileUtils.isDirectoryExist(storagePath)) {
            jsb.fileUtils.removeDirectory(storagePath)
            console.log("大版本更新刪除緩存");
        }
        localStorage.setItem(gameVersion,gameVersion)
        console.log("storagePath:")
        console.log(storagePath)
    }
  • 最后一步 在build - jsb-link - frameworks - runtime-src 選擇對應平臺 在手機上跑起來

2.創(chuàng)造更新內(nèi)容:

  • 打開工程 簡單的 新增一個按鈕 跳轉(zhuǎn)一個新場景(見demo)
  • 構(gòu)建發(fā)布
  • 打開終端,cd 工程根目錄 執(zhí)行nodejs代碼 遠程資源地址和之前相同,版本號需要修改!
node version_generator.js -v 0.0.1 -u http://192.168.2.1:8000/remote-assets/HotUpdateDemo/ -s build/jsb-link/ -d assets/
  • 復制以下四個文件 到 遠程服務器目錄
    WechatIMG6.jpeg

    WechatIMG5.jpeg

最終效果如圖:


WechatIMG7.jpeg
  • 最后 手機重新刪掉進程打開原生項目。點擊檢查更新,然后開始更新,見證奇跡(手機記得和電腦 在一個網(wǎng)絡環(huán)境)

  • demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容