一 原理:
二 環(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)境)







